2016-05-17 4 views
7

Sto imparando git, ma sono confuso da diversi modi di mettere in scena e impegnare i file. Per capirlo, sto usando una metafora di directory: directory di lavoro, directory di staging, directory di commit.Quando dovrei usare rm, git rm, git rm --cached, git add

  • Se io rm un file dal mio directory di lavoro, lo rimuove solo solo dalla mia directory di lavoro. È corretto?
  • Se I git rm un file dalla mia directory di lavoro, lo rimuove da tutte le tre directory. Corretta?
  • Se I git rm --cached un file, viene rimosso il file dal mio numero di serie e le directory di commit, ma lasciarlo nella mia directory di lavoro?
  • Se ho aggiornato, ha aggiunto, e cancellato i file dal mio lavoro directory, e fare git add ., quindi git status mostra i file che sono stati aggiunti, eliminati e aggiornati in scena. Cosa succede quando commetto? I file cancellati vengono rimossi dalla directory Commit? Se torno a che esegue il commit più tardi, i file eliminati verranno visualizzati nuovamente?

Qualsiasi aiuto per comprendere meglio questi concetti sarebbe apprezzato -grazie!

risposta

17

Tweak la comprensione dell'area di gestione temporanea (noto anche come indice o cache) e l'opzione --cached. I documentation for git rm stati

--cached 

Utilizzare questa opzione per unstage e rimuovere percorsi solo dall'indice. I file dell'albero di lavoro, modificati o meno, saranno lasciati in pace.

Scorrendo l'elenco dà

  • rm file - rimuovere file dalla directory di lavoro unico
  • git rm - rimuovere file dalla directory di lavoro e per l'area di sosta, ma non ancora parte della storia (repository, "directory di commit")
  • git rm --cached - rimuovere dall'area di gestione temporanea ma né la directory di lavoro né la cronologia
  • git add . in presenza di modifiche, nuovi file e file cancellati - git registrerà le modifiche e i nuovi file non identificati nella cache. (git add si comporteranno in modo diverso con determinate opzioni.)

L'opzione --cached ai vari comandi git li fa attivare sull'indice o almeno rispetto all'indice.

git add e git rm prendere le modifiche dalla directory di lavoro all'indice o alla cache. Pensa a questi comandi come a costruire il tuo prossimo commettere un pezzo alla volta.

Dopo aver soddisfatto le voci dell'indice, spostare le modifiche dall'indice al repository con git commit.

maggior parte del tempo, ciò che si vuole è la semplice sequenza git rm file seguito da git commit per fermare il monitoraggio del file al punto corrente nella vostra storia.