2011-10-21 10 views
27

Jak odrzucić zmiany w lokalnych gałęziach git? np. Lokalny oddział z wersją: A-> B-> C Teraz jestem w wersji A i ma pewne zmiany w konflikcie z najnowszą wersją C. Chcę odrzucić lokalne zmiany i pobrać najnowszą wersję C.jak odrzucić zmiany w lokalnych gałęziach git?

$ git pull 

Spotkamy się z pewnym błędem. i jest wiele plików, więc nie muszę wiele razy. $ git co files

Czy istnieje lepszy sposób?

Odpowiedz

54

Jeśli masz niezatwierdzone zmiany, które chcesz usunąć, użyj tego:

$ git reset --hard 

co jest równoważne

$ git reset --hard HEAD 

ta usuwa wszystkie lokalne zmiany niezatwierdzone. Jeśli chcesz usunąć niektóre szkodliwe zatwierdzenia z lokalnego oddziału, spróbuj go przewinąć:

$ git reset --hard HEAD^ #moves HEAD back by one commit 

lub np.

$ git reset --hard HEAD~3 #moves HEAD back by 3 commits 

Używaj ich z rozwagą, ponieważ nie będziesz w stanie cofnąć tych operacji. Po zakończeniu czyszczenia lokalnego oddziału użyj git pull, aby uzyskać najnowszy kod.

+0

Jeśli już pchnął swój oddział do zdalnego serwera trzeba być ostrożnym z resetem --hard gdyż może zepsuć historię. –

+0

Nie powoduje to usunięcia niezatwierdzonych plików. Musisz usunąć te pliki ręcznie. –

0

Czy już popełniłeś swoje lokalne zmiany? Jeśli nie git zresetować --hard głowa powinna rade

+0

Możesz także cofnąć zmiany zatwierdzone lokalnie, zobacz rozwiązanie ayoy. – jli

19
git fetch 
git reset --hard origin/master 
+0

'git reset --hard origin/master' jest dokładnie tym, czego szukałem! – mystarrocks

+0

to przy założeniu, że w pewnym momencie zostałeś sprawdzony na pilocie, czy to samo dotyczy lokalnych repo? czy mogę zrobić "git reset --hard otherLocalBranch" dla tego samego efektu? –

+0

To jest dokładnie to, czego szukałem, aby odrzucić pomyłki, które przez pomyłkę wyciągnąłem z innego oddziału. Dzięki @ Onlylyjob –

Powiązane problemy