2011-10-14 17 views
11

Potrzebujesz pomocy w określeniu kilku typowych przepływów pracy z Github. Pochodzę z tła VS TFS, więc wybacz mi.Git: Cofnij zmiany lokalne; git dodaj. + git rm?

Cofanie zmian oczekujących

Powiedzmy mam sklonowany z repozytorium git do mojego lokalnego systemu plików. W tym momencie lokalne pliki projektu odpowiadają dokładnie temu, co znajduje się w zdalnej repoystyce.

Następnie postanowiłem wprowadzić pewne zmiany w kodzie i zmienić lokalne wersje kilku plików. Po przeprowadzeniu testów, stwierdzam, że chcę odrzucić moje lokalne zmiany i przywrócić lokalne pliki z powrotem do tego, co znajdują się w zdalnej repoystyce.

Jak cofnąć zmiany lokalne, przywracając je do bieżących wersji w repozytorium?

Popełnienie wszystkie zmiany

Ilekroć modyfikować zawartość plików lokalnych w moim repozytorium klonu, lub dodać nowe pliki, a chcą popchnąć zmiany, I wydać „git dodać.”, „Git commit” z moimi komentarzami, a następnie "git push" do mojego mistrza.

Jednak, gdy usunę plik lokalnie śledzony w repozytorium, "git add." nie przechwytuje zmian rm. Zamiast tego muszę "git rm [nazwa pliku]" przed "git commit", aby zaktualizować repozytorium. Zawsze jednak zapominam o tym.

Czy istnieje polecenie git, które "doda git". i "git rm" wszystkie pliki, które usunąłem lokalnie, w jednym kroku? Po zmodyfikowaniu plików lokalnych i usunięciu pary chciałbym wydać tylko jedno polecenie przechwytujące wszystkie moje zmiany przed "git commit".

Odpowiedz

22

Jak mogę cofnąć te zmiany lokalne, przywracając je do aktualnych wersji w repozytorium? `

git reset --hard 

(spowoduje to zresetowanie indeksu i katalog roboczy na głowie)

Czy istnieje polecenie git, które "doda git". i „git rm” wszystkie pliki Usunąłem lokalnie, w jednym kroku? `

git add -u 

(przyzwyczajenie dodać nowe pliki)

Jeśli chcemy także dodać nowe pliki, usuń rm” ed plików i modyfikacji etapów do plików:

git add -A 
+0

Myślę, że to jest poprawna odpowiedź. Sprawdź ten link, aby uzyskać więcej informacji: http://book.git-scm.com/4_undoing_in_git_-_reset,_checkout_and_revert.html – dresende

3

można przywrócić swój ostatni ważny commit (czyli kopię zdalnego repo, w przykładzie wycieczki) poprzez emisję:

git reset --hard HEAD 

Dodatkowo, proponuję czytanie przydatnych http://progit.org/2011/07/11/reset.html stronę, aby lepiej zrozumieć, w jaki sposób zresetować pracy i czym jest indeks i dlaczego git add and git rm są osobnymi poleceniami.