2011-09-27 19 views
19

Quando modifichi un file nella tua directory di lavoro, git ti dice di usare "git add" sullo stage.Concetto di git tracking e git staging

Quando aggiungi un nuovo file alla tua directory di lavoro, git ti dice di usare "git add" per iniziare il tracciamento.

Sono un po 'confuso su questi 2 concetti perché davo per scontato il monitoraggio di un programma per le modifiche è diverso da messa in scena per commettere

risposta

12

Git ha un concetto noto come 'indice'. Per creare un nuovo commit, si riempie l'indice con i contenuti che si desidera avere nel prossimo commit. Ciò significa che devi dire esplicitamente a Git quali modifiche vuoi visualizzare nel prossimo commit usando git add. (

Non fa differenza a Git se si aggiorna solo un file (»cambio di stage«) o se si aggiunge il contenuto completo di un nuovo file (»avvia il rilevamento di un file «) - entrambe le volte, tutto ciò che l'indice di Git vede è l'aggiunta di nuove modifiche

+0

spiegazione Terrific. – cheznead

8

Quando si aggiunge un file per avviare il monitoraggio, mette in scena anche il suo contenuto.

Se si desidera aggiungere un file per il monitoraggio, senza messa in scena, è possibile utilizzare

git add -N 
1

Entrambe le fasi git add che identificate fanno essenzialmente la stessa cosa, hanno semplicemente spiegazioni diverse a causa della loro rotta di arrivo.

Il git add indica semplicemente a Git che il file fornito è un file che si desidera avere, nella sua forma corrente esatta (il suo contenuto), all'interno del proprio repository di controllo sorgente. A quel punto git eseguirà un'istantanea del file (e manterrà una nota nel suo indice) in modo che sia pronto per quando tutte le modifiche ai file saranno pronte e aggiunte (cioè raggruppate insieme nell'area di staging), per il tuo git commit (con il messaggio appropriato ;-).

Una volta che è stato comunicato a Git quel file (ad esempio l'opzione -N di @avh), noterà (traccia) le modifiche al file sotto l'aspetto di vari comandi (come git status). Quindi, in seguito, devi dire esplicitamente a git quando non vuoi più tracciare un file (git rm <file>), e puoi continuare a modificare un file (localmente) dopo che hai add e la versione che sarà nel commit. Quasi ovviamente (o forse no), è possibile un file git add molte volte prima di eseguire il commit della versione finale.

21

Git ha essenzialmente 4 stati principali per i file nel tuo repo locale:

  • non monitorate: Il file è nuovo, Git non ne sa nulla. Se git add <file>, diventa:
  • in scena: Ora Git conosce il file (cingolato), ma anche reso parte del prossimo commit batch (chiamato dell'indice). Se si , diventa:
  • invariato: Il file non è stato modificato dall'ultimo commit. Se si modifica , diventa:
  • nonstato: Modificato ma non ancora parte del commit successivo.Si può mettere in scena di nuovo con git add

Come si può vedere, una pista git add volontà file non monitorate, e fase qualsiasi file.

anche: È possibile untrack un file UNCOMMITED con git rm --cached filename e unstage un file di scena con git reset HEAD <file>