Menu
Coddy logo textTech

Git: przerwanie merge

Ostatnia aktualizacja

Jeśli git merge natrafi na konflikty, a wolisz się wycofać niż je rozwiązywać, git merge --abort anuluje scalanie i przywraca gałąź dokładnie do stanu sprzed jego rozpoczęcia. To czyste wyjście awaryjne z merge'a, który poszedł nie tak.

Scalanie, które już się zakończyło, cofa się inaczej: szczegóły poniżej. Wypróbuj te polecenia w terminalu online: prawdziwa powłoka w przeglądarce.

git merge --abort anuluje scalanie z konfliktami i przywraca gałąź do stanu sprzed rozpoczęcia scalania.

Składnia

PolecenieCo robi
git merge --abortAnuluje scalanie z konfliktami, przywraca stan sprzed merge
git reset --mergeStarszy odpowiednik: przerywa i resetuje scalanie
git merge --quitPorzuca scalanie, ale zostawia katalog roboczy bez zmian

Cofanie zakończonego scalania

To coś innego niż przerwanie: commit scalający już istnieje.

SytuacjaPolecenie
Merge jest lokalny, niewypchniętygit reset --hard ORIG_HEAD
Merge jest już wypchniętygit revert -m 1 <merge-hash>

Najczęstsze pytania o przerwanie merge

Jak anulować trwające scalanie?
Uruchom git merge --abort. Jeśli scalanie zatrzymało się z powodu konfliktów, a nie chcesz ich rozwiązywać, to polecenie anuluje całą operację i przywraca gałąź oraz katalog roboczy dokładnie do stanu sprzed rozpoczęcia merge.
Czym różni się git merge --abort od git reset --merge?
Robią w zasadzie to samo: anulują trwające scalanie i przywracają stan sprzed niego. git merge --abort to nowoczesne polecenie stworzone właśnie do tego; git reset --merge to starszy sposób, który nadal działa. Dla czytelności wybieraj git merge --abort.
Jak cofnąć scalanie, które już się zakończyło?
To nie jest przerwanie, bo commit scalający już istnieje. Jeśli merge jest tylko lokalny, git reset --hard ORIG_HEAD przesuwa gałąź z powrotem do miejsca sprzed scalania; działa to także po fast-forward, gdzie HEAD~1 by nie zadziałało. Polecenie usuwa niezatwierdzoną pracę, więc najpierw sprawdź git status. Jeśli merge jest już wypchnięty, użyj git revert -m 1 <merge-hash>, żeby go odwrócić bez przepisywania wspólnej historii.
Czy przerwanie scalania usunie moje inne zmiany?
git merge --abort przywraca stan sprzed scalania, więc zmiany z merge zostają odrzucone, ale twoja zatwierdzona praca jest nienaruszona. Jeśli przed scalaniem masz niezatwierdzone zmiany, najpierw zrób commit albo schowaj je do stash, bo abort przywraca stan commita sprzed merge.
Czy mogę to przećwiczyć online?
Tak. Otwórz terminal online i uruchom git merge --abort w prawdziwej powłoce w przeglądarce, bez żadnej instalacji. Darmowy interaktywny kurs Git w Coddy też krok po kroku omawia scalanie i rozwiązywanie konfliktów.
Ilustracja języków programowania w Coddy

Ucz się Gita z Coddy

ZACZNIJ