2011-10-14 5 views
11

Hai bisogno di aiuto per capire un paio di flussi di lavoro comuni con Github. Vengo da uno sfondo VS TFS, quindi perdonami.Git: Annulla le modifiche locali; aggiungi git. + git rm?

Annullamento Modifiche in sospeso

Diciamo che ho clonato di un repository git al mio file system locale. A questo punto, i file locali del progetto corrispondono esattamente a quelli presenti nella repoistoria remota.

Quindi ho deciso di apportare alcune modifiche al codice e di modificare le versioni locali di un paio di file. Dopo aver fatto alcuni test, ho capito che voglio scartare le mie modifiche locali e ripristinare i file locali di nuovo in quello che sono nella repoistoria remota.

Come annullo queste modifiche locali, ripristinandole alle versioni correnti nel repository?

Commettere tutte le modifiche

Ogni volta che modifico il contenuto dei file locali nel mio clone repository, o aggiungere nuovi file, e voglio spingere le modifiche, ho Emissione "git add.", "Git commit" con i miei commenti, quindi "git push" al mio padrone.

Tuttavia, quando elimino un file localmente tracciato nel repository "git add". non cattura le modifiche rm. Invece, devo "git rm [nome file]" prima che io "git commit" aggiorni il repository. Mi dimentico sempre di farlo comunque.

Esiste un comando git che "aggiungerà". e "git rm" tutti i file che ho cancellato localmente, in un solo passaggio? Dopo aver modificato i file locali e aver eliminato un paio, vorrei rilasciare un solo comando che cattura tutte le mie modifiche prima di "git commit".

risposta

22

Come faccio ad annullare questi cambiamenti locali, riportandoli alle versioni attuali nel repository? `

git reset --hard 

(questo ripristinerà l'indice e directory di lavoro a testa)

C'è un comando git che "aggiungerà". e "git rm" qualsiasi file Ho cancellato a livello locale, in un unico passaggio? `

git add -u 

(non ci vorrà aggiungere nuovi file)

Se anche voi volete aggiungere nuovi file, rimuovere rm' file ed edizioni dello stage in file:

git add -A 
+0

Penso che questa sia la risposta corretta. Controlla questo link per maggiori informazioni: http://book.git-scm.com/4_undoing_in_git_-_reset,_checkout_and_revert.html – dresende

3

È possibile ripristinare l'ultima valida commit (cioè copia del pronti contro termine a distanza, nell'esempio tour) mediante emissione di:

git reset --hard HEAD 

Inoltre, vi suggerisco di leggere l'utile http://progit.org/2011/07/11/reset.html pagina per capire meglio come ripristino di lavoro e cos'è l'indice e perché git add e git rm sono comandi separati.