> git init .
Initialized empty Git repository in /home/XXXXX/test/.git/
> ll
total
> touch foo
> git add foo
> git commit -m init
[master (root-commit) cdc99b4] init
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 foo
> echo "bar">foo
> git log
commit cdc99b4fa8cd2117015cd114bf269ab9a209e58c
Date: Thu Jan 28 08:57:34 2016 +0100
init
Change-Id: If5530860db17d2242e4082666042960fc423f737
> git diff --cached cdc99b4fa8cd2117015cd114bf269ab9a209e58c
> cat foo
bar
> git status
# On branch master
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: foo
#
no changes added to commit (use "git add" and/or "git commit -a")
>
Le résultat attendu est que git diff peut afficher une barre
git diff --cached
Expliquez,
git diff
La comparaison est entre l'arbre de travail et HEAD. Et le vôtre devrait être aprèsgit add
, vous devez donc comparer staged et HEAD, et ajouter--cached
juste pour cela.OK, je n'ai pas lu attentivement le processus de la question auparavant, donc la réponse ci-dessus est fausse. Merci à @jokester de me l'avoir rappelé.
Ensuite j'ai reproduit le processus de pose de la question, et les résultats sont les suivants :
Le résultat est
git diff
Il n'y a pas de problème. Afin de s'assurer qu'il n'y a pas d'omissions dans l'ensemble du processus, une capture d'écran complète est jointe. Le questionneur peut la comparer pour voir où se situe le problème.De plus, j'ai remarqué que l'interrogateur utilisait la commande
foo
après avoir rééditégit add
sansgit diff --cached
, ce qui correspond exactement à ce que j'ai évoqué dans la réponse précédente (j'ai compris le but de la question à l’envers), alors n’ajoutez pas--cached
. Ci-joint une comparaison :Git diff devrait voir la barre sans paramètres
Tu ne peux pas faire un git diff normal ?