Perché git diff
pensa che non ci siano cambiamenti
..anche se git status
li riporta come modificato?
$ git status
On branch master
Your branch is ahead of "origin/master" by 2 commits.
(use "git push" to publish your local commits)
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
new file: file-added
modified: file-with-changes << it knows there are changes
ma per vedere la differenza, devo aggiungere esplicitamente l'ultimo hash di reversione ..
$ git diff
(nothing)
$ git diff rev-hash
diff --git a/file-with-changes b/file-with-changes
index d251979..a5fff1c 100644
--- a/file-with-changes
+++ b/file-with-changes
.
..
risposte:
22 per risposta № 1Per favore prova git diff --staged
comando.
Altre opzioni che puoi usare
git diff
mostra le modifiche tra indice / staging e file di lavoro. Nel tuo caso, git add
metti il file-with-changes
all'area di sosta. Quindi, nessuna differenza tra i file di staging e di lavoro.
git diff --staged
mostra i cambiamenti tra HEAD e index / staging. git diff --cached
fa anche la stessa cosa staged
e cached
può essere usato in modo intercambiabile.
git diff HEAD
mostra le modifiche tra HEAD e file di lavoro
git diff $commit $commit
mostra i cambiamenti tra 2 commit
git diff origin
mostra diff tra HEAD e remote / origin
5 per risposta № 2
git diff
diff contro l'indice, non contro il tuo HEAD
revisione. Correndo git add
, hai inserito le modifiche nel tuo indice, quindi ovviamente non ci sono differenze!
git diff HEAD
per vedere le differenze tra il tuo stato dell'albero e ilHEAD
revisione, ogit diff --cached
per vedere le differenze tra il tuo indice e ilHEAD
revisione.
1 per risposta № 3
Sono andato nello stesso identico problema.
- Aggiungi il nuovo file che hai creato usando git aggiungi nomefile1.c
- Apporta un'altra modifica in qualche altro nomefile2.c che era già parte del sistema di tracciamento del repository.
- Fai un git diff e vedrai solo le modifiche a filename2.c. Le modifiche a nomefile1.c non verranno visualizzate.
- Tuttavia, se si esegue uno stato git, verranno visualizzate le modifiche sia in filename1.c che filename2.c.
- Esegui un commit git -a -m "Cambia in nomefile1.c e filename2.c blah blah"
- Fai una spinta
Vedrai che filename1.c è stato eseguito.
0 per risposta № 4
Perché git diff
per impostazione predefinita controlla le differenze tra l'area di staging e la tua copia di lavoro. Quando tu git add
, la tua area di staging corrisponde alla tua copia di lavoro e quindi diff non riporta modifiche.
Aggiungere il --cached
flag dice diff a diff contro HEAD
.