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?



Nie możesz po prostu przywrócić poprzedniego zatwierdzenia gałęzi?
Wutipong Wongsakuldej


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ń.


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


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! :)


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ę
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.