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.
Składnia
| Polecenie | Co robi |
|---|---|
git merge --abort | Anuluje scalanie z konfliktami, przywraca stan sprzed merge |
git reset --merge | Starszy odpowiednik: przerywa i resetuje scalanie |
git merge --quit | Porzuca scalanie, ale zostawia katalog roboczy bez zmian |
Cofanie zakończonego scalania
To coś innego niż przerwanie: commit scalający już istnieje.
| Sytuacja | Polecenie |
|---|---|
| Merge jest lokalny, niewypchnięty | git reset --hard ORIG_HEAD |
| Merge jest już wypchnięty | git 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.