2012-09-21 17 views
40

kroki i działania:przywrócić scalania po pchanych

Mam dwie gałęzie branch1 i Branch2,

$git branch --Initial state 
$branch1 

$git checkout branch2 
$git pull origin branch1 --Step1 

rozwiązać konflikty i zrobił

$git commit -m "Merge resolved" 

następnie

$git checkout branch1 
$git merge branch2 
$git push origin branch1 

Teraz i reali sed, będąc w kroku 1, automatyczne scalanie usunęło jakiś kod i kod zmiany został pchnięty, teraz chcę wrócić do mojego początkowego stanu, aby przywrócić jakiekolwiek zmiany. Szukasz natychmiastowej pomocy?

+0

Czy git nie przywrócić to, co chcesz? –

+1

podaje komunikat jako: krytyczny: Zatwierdź b4a758b36a5bde9311061fe7b56e4f47859de052 jest połączeniem, ale nie podano opcji -m. @FrederickCheung – Bijendra

+0

Sprawdź instrukcję o opcji -m. http://www.kernel.org/pub/software/scm/git/docs/git-revert.html Wkrótce można użyć opcji -m 1 lub -m 2. Pozwala to wybrać jedną z dwóch wersji nadrzędnych, które chcesz Odwracać. –

Odpowiedz

56

Możesz przywrócić scalenie następujące po official guide, jednak pozostawia to Gitowi błędne przekonanie, że połączone zatwierdzenia nadal znajdują się w docelowej gałęzi.

Zasadniczo trzeba:

git revert -m 1 (Commit id of the merge commit) 
+16

Należy zachować ostrożność przy "1". Oznacza to "pierwszego" rodzica scalenia commit. Ale jeśli jeden (hipotetycznie) "przez przypadek" połączył master z odgałęzieniem, a następnie szybko przekazał master do połączonego zatwierdzenia - należy użyć '-m 2', aby przywrócić połączenie z wzorcem. –

+1

Uważaj przy tym "1". Splądrował moje repozytorium częściowo przywracając scalenie, podczas gdy ja chciałem całkowicie odwrócić scalenie. Skończyło się na odwróceniu rewersu! – Metallica

15

Spróbuj użyć git reflog <branch>, aby dowiedzieć się, gdzie znajdował się twój oddział przed scaleniem, i git reset --hard, aby przywrócić starą wersję.

Reflog pokaże Ci starsze stany oddziału, dzięki czemu możesz je przywrócić do dowolnej wybranej przez siebie mody.

Upewnij się, że jesteś we właściwym oddziale podczas korzystania git zresetować

Aby zmienić zdalnego repozytorium historię, można to zrobić git push -f, jednak nie jest to zalecane, ponieważ ktoś może alredy pobrało zmiany, pchanych przez Ciebie.

+0

Pchnąłem kod do oddziału zdalnego, w jaki sposób to będzie odwrócić kod stamtąd .. – Bijendra

+1

jeśli już pchnąłeś, NIE chcesz pisać lokalnej historii, tak jak opisała to Ilya: –

+2

Niestety, tęskniłem za tym ... Czasami możesz użyć git push-f, aby przepisać zdalną historię. To zależy od konfiguracji twojego zdalnego repozytorium i innych członków zespołu (jeśli nie zabiją cię za to wymuszone pchnięcie). –

Powiązane problemy