2010-07-20 24 views

risposta

81

Da "Specifying revisions"

HEAD nomi il commit su cui si basano i cambiamenti nella struttura di lavoro.

Non ci sono altre teste (FETCH_HEAD, ORIG_HEAD e MERGE_HEAD). Vedi Jefromi's answer per ulteriori informazioni.

Il fatto è che, per impostazione predefinita git diff mostra in realtà le differenze tra "lo stato attuale del progetto" (vale a dire i file sul vostro albero di lavoro) e l'indice (non HEAD).
In altre parole, le differenze sono ciò che è dire git per aggiungere ulteriormente all'indice, ma non è ancora.

se si fa git diff --cached, allora si confronterà l'indice con HEAD.

Vedi git book for more (archive link):

Un uso comune è quello di eseguire semplicemente

$ git diff 

che vi mostrerà le modifiche nella directory di lavoro che non sono ancora in scena per il prossimo commit. Se volete vedere ciò che è messo in scena per il prossimo commit, è possibile eseguire

$ git diff --cached 

che vi mostrerà la differenza tra l'indice e il tuo ultimo commit; cosa dovresti commettere se esegui "git commit" senza l'opzione "-a". (Nelle versioni Git 1.6.1 e successive, è possibile anche utilizzare git diff --staged che può essere più facile da ricordare.) Infine, è possibile eseguire

$ git diff HEAD 

che mostra i cambiamenti nella directory di lavoro dal tuo ultimo commit; cosa dovresti commettere se esegui "git commit -a".

Vedi anche 365git: Getting a diff between the working tree and other commits:

http://images.abizern.org.s3.amazonaws.com/365git/Feb11/Git%20Diff%202.png

Non
+2

link impressionante, nei 3 anni di utilizzo di git non ho visto una singola immagine che spiegasse le cose così bene. Le immagini git offical sono orribili rispetto alla semplicità fornita dall'immagine collegata. Tutte le altre immagini sul blog sembrano essere paragonabili. Voglio dire che le immagini ufficiali di Git sono piuttosto serie di immagini che lasciano ancora spazio all'interpretazione, mentre l'immagine nel tuo post spiega 5 diversi comandi in solo 1 immagine. Questa è piuttosto l'inversione dell'efficienza, 5 immagini per comando rispetto a 5 comandi per immagine. – HopefullyHelpful

2

git diff è per mostrare le modifiche non (ad esempio, il lavoro che avete fatto, ma non hanno ancora impegnati al progetto corrente).

Ecco una spiegazione completa: http://git-scm.com/docs/git-diff

+0

esattamente. La risposta di VonC è più accurata; 'git diff' fa * not * mostra le modifiche che hai apportato, non ancora impegnate nel progetto, ma * hanno * aggiunto con un' git add'. –

Problemi correlati