2013-10-03 7 views
29

Avevo un file non tracciato che non appariva in un git diff e quando l'ho aggiunto all'area 'changes to be committed', non appare ancora nel git diff. Mi presento con un git status -v quando faccio un diff contro HEAD.Il file non viene visualizzato in git diff dopo l'aggiunta di git. Come faccio a sapere che sarà impegnato?

Sono ancora molto nuovo da git, quindi qualcuno potrebbe dirmi se il file verrà eseguito anche se non viene visualizzato in un normale diff, in quanto è stato aggiunto all'area di gestione temporanea?

risposta

39

Se vuoi vedere la in scena cambiamenti in un diff, è comunque possibile utilizzare git diff, è solo bisogno di passare il flag --staged:

[email protected]:~/dummy_repo$ echo "Hello, world" > hello.txt 
[email protected]:~/dummy_repo$ git status 
# On branch master 
# 
# Initial commit 
# 
# Untracked files: 
# hello.txt 
nothing added to commit but untracked files present 
[email protected]:~/dummy_repo$ git add hello.txt 
[email protected]:~/dummy_repo$ git diff 
[email protected]:~/dummy_repo$ git diff --staged 
diff --git a/hello.txt b/hello.txt 
new file mode 100644 
index 0000000..76d5293 
--- /dev/null 
+++ b/hello.txt 
@@ -0,0 +1 @@ 
+Hello, world 

Se vi interessa soltanto che i file sono messo in scena, ovviamente è possibile fare un git status, ma git diff --staged --name-only assegnerà ogni nome di programma a fasi sulla propria linea.

+2

attenti al fatto che git diff --staged * only * mostra i file aggiunti, non altre modifiche ... – rogerdpack

4

Come hai visto. mostra in git status, quindi sì, sarà impegnato quando si git commit esso.

Si possono trovare utile utilizzare uno strumento di git visiva come GitX (Mac) o gitg (Linux),

Ha bei pannelli per mostrarvi in ​​scena, non è messo in scena, ecc

enter image description here

Il mio screenshot sembra di riserva perché attualmente non ho modifiche in quello stato.

1

Se hai digitato "git add __", il file verrà incluso nel prossimo commit. Questo commit verrà inviato al server quando si esegue "git push".

+0

A che serve questa risposta? Che ne dici se vuoi prendere una patch manuale per qualche motivo. (non ti preoccupare di rispondere con il perché vorresti farlo? Ci sono centinaia di ragioni per cui vorrei) – Stephen

+0

@Stephen, questa è una risposta che ho scritto 2 anni fa, e quindi sto facendo un'ipotesi su quale sia il mio pensiero processo era allora. Il post dell'OP termina con la domanda "Qualcuno potrebbe dirmi se il file sarà impegnato anche se non viene visualizzato in un diff regolare, in quanto è stato aggiunto all'area di staging?". Questa è una risposta diretta a questa domanda. – tom

21

Per vedere tutte le modifiche nella struttura di lavoro dal tuo ultimo commettere tra cui i nuovi file utilizzano:

git diff HEAD 

Vedi altri esempi qui: git-diff