2012-07-19 10 views
7

Połączyłem gałąź beta w gałąź główna. Popchnąłem do pochodzenia. Teraz chcę, aby mistrz był taki, jak przed połączeniem, zarówno lokalnie, jak i zdalnie.Które zatwierdzanie mieszania ma na celu cofnięcie pchanego scalania za pomocą polecenia git-revert?

Dobrym rozwiązaniem dla undoing a merge that was already pushed sugeruje

git revert -m 1 commit_hash 

Jeśli jest to rzeczywiście droga, jak mogę określić commit_hash? I bezskutecznie próbowała hash zwrócony przez merge-base:

$ git merge-base --all master beta 
1f4b949b7ef97abf913ae672e3acd0907abfac1b 
$ git revert -m 1 1f4b949b7ef97abf913ae672e3acd0907abfac1b 
error: Mainline was specified but commit 1f4b949b7ef97abf913ae672e3acd0907abfac1b is not a merge. 
fatal: revert failed 

Mam badane zarówno git-log i gitk interpretacje oddziałów, ale są one bardzo długo i jestem niepewny dosyć mojej interpretacji czuć powinienem szukaj pomocy, zanim zrobisz większy bałagan. Beta została wyprowadzona z v2, która pochodzi od mistrza. Po drodze nastąpiły pewne fuzje od mistrza do wersji v2 i beta, ponieważ utrzymywałem nowe gałęzie na bieżąco z mistrzem. Fuzja w kierunku od beta do mistrza była błędem, który chciałbym poprawić.

Kiedy ustalę punkt scalenia, jeśli znajdę jakieś zatwierdzenia na master po fuzji, które naprawdę powinny znajdować się w gałęzi beta, jaki jest najlepszy sposób na ich przeniesienie?

+2

Wypróbuj 'log --all - graf --pretty = tformat: '% Cred% h% Creset -% C (żółty)% d% Creset% s% Cgreen (% an% cr)% Creset' - abbrev-commit --date = relative' (Ja osobiście to pseudonim), wyświetli zatwierdzenia wszystkich gałęzi i ich daty, a także miejsce, w którym nastąpiło scalenie. –

Odpowiedz

4

Musisz znaleźć zatwierdzenie scalenia, git merge-base powie Ci zatwierdzenie, w którym możesz dokonać scalenia. Jest to w zasadzie ostatnie zatwierdzenie, które istnieje w tych dwóch gałęziach. Zatwierdzenie scalenia istnieje tylko w gałęzi głównej, chyba że po scaleniu utworzono nową gałąź, ale nie ma to znaczenia tutaj. :)

aby znaleźć scalającej spróbować: git log master ^beta --ancestry-path --merges

Niezbędne popełnić jest bardzo ostatni popełnić.

Ale proszę przeczytać na Linusa napisać: http://www.kernel.org/pub/software/scm/git/docs/howto/revert-a-faulty-merge.txt

Powiązane problemy