Przerwij scalanie Git

120

Pracuję nad projektem, używając Gita jako VCS. Mam xyzodciętą gałąź z głównej gałęzi mistrza. Po dłuższej pracy popełniłem kod i zacząłem korzystać z głównej linii oddziału.

Pociągnięcie było w porządku. Następnie połączyłem kod z masterem. Po scaleniu wystąpiły problemy w niektórych plikach. Nie popełniłem kodu po scaleniu. Czy ktoś może wskazać, jak mogę przerwać to scalanie i przenieść oddział, w którym obecnie pracuję, do stanu, w którym znajdował się przed scaleniem?

Salman Kazmi
źródło
Nie możesz po prostu przywrócić poprzedniego zatwierdzenia gałęzi?
Wutipong Wongsakuldej
2
Możliwy duplikat Jak cofnąć scalanie git z konfliktami
Scott Weldon
1
Zauważ, że w Git revertto nazwa polecenia, które tworzy nowe zatwierdzenie, cofając zmiany z poprzedniego zatwierdzenia, więc prawdopodobnie nie jest to słowo, którego tutaj szukasz. Mam edytować swoje pytanie do wyjaśnienia.
Scott Weldon

Odpowiedzi:

300

tak długo, jak nie zatwierdziłeś, możesz pisać

git merge --abort

tak jak sugerowała linia poleceń.

Timothy Truckle
źródło
4
Otrzymałem tę wiadomość, próbując to error: Entry 'MyFile.java' not uptodate. Cannot merge. fatal: Could not reset index file to revision 'HEAD'.
zrobić
1
@Ahmad git nie rozpoczyna scalania z niezatwierdzonymi zmianami (już śledzonych plików). git nie może chronić tego, czego nie wie.
Timothy Truckle
tak, nauczyłem się tego przez utratę kodu. oto szczegóły mojego problemu, jak miałem problem. stackoverflow.com/questions/55474092/how-to-undo-the-git-abort
Ahmad
23

Jeśli zrobisz „git status” podczas konfliktu scalania, pierwszą rzeczą, którą git pokaże, jest to, jak przerwać scalanie.

wyjście statusu git podczas konfliktu scalania

MLY
źródło
Fajnie, to zasugerowało mi, do git reset HEAD <file>którego skutecznie usunąłem zwijane "merge" z kontroli źródła rozszerzenia git => wtedy mogłem albo rozwiązać konflikty, albo po prostu przywrócić moje zmiany na liście rozszerzeń GIT :)
jave.web
6

Prawdę mówiąc, istnieje wiele, wiele zasobów wyjaśniających, jak to zrobić, już w sieci:

Git: jak odwrócić scalenie zatwierdzenia?

Git: jak odwrócić scalenie zatwierdzenia?

Undoing Merges , from Git's blog (pobrane z Archive.org's Wayback Machine)

Więc chyba podsumuję tylko niektóre z nich:

  1. git revert <merge commit hash>
    Tworzy to dodatkowe zatwierdzenie „cofnij”, informujące o cofnięciu scalenia

  2. git reset --hard <commit hash *before* the merge>
    Zresetuj historię do stanu sprzed scalenia. Jeśli masz zatwierdzenia po scaleniu, będziesz potrzebować cherry-pickich później.

Ale szczerze mówiąc, ten przewodnik jest lepszy niż cokolwiek, co mogę wyjaśnić, z diagramami! :)

denis.lobanov
źródło
1
Link zniknął. Westchnienie.
SMBiggs
@ScottBiggs Myślę, że przenieśli to na git-scm.com/book/en/v2/… . Denis, jeśli to czytasz, możesz sprawdzić? A jeśli to naprawdę to samo, czy możesz zaktualizować link w swojej odpowiedzi? Dziękuję Ci!
Fabio mówi Przywróć Monikę