Menu
Coddy logo textTech

Git Merge

Ostatnia aktualizacja

git merge przenosi commity z innej gałęzi do bieżącej. Gdy bieżąca gałąź się nie rozeszła, Git robi fast-forward, czyli po prostu przesuwa wskaźnik do przodu. Gdy obie gałęzie mają nowe commity, Git tworzy commit scalający, który łączy obie historie. W przeciwieństwie do rebase merge zachowuje dokładną historię obu gałęzi.

Wypróbuj te polecenia w terminalu online: prawdziwa powłoka w przeglądarce, bez żadnej instalacji.

git merge łączy obie historie commitem scalającym; obie gałęzie zachowują swoje oryginalne commity.

Składnia

PolecenieCo robi
git merge featureScala feature z bieżącą gałęzią
git merge --no-ff featureZawsze tworzy commit scalający
git merge --ff-only featureScala tylko, jeśli możliwy jest fast-forward
git merge --squash featureŁączy commity gałęzi w jeden
git merge --abortAnuluje scalanie z konfliktami

Fast-forward vs commit scalający

ScenariuszFast-forwardCommit scalający (--no-ff)
Tworzy nowy commitNieTak
Zostawia ślad gałęziNieTak
Występuje, gdyBieżąca gałąź się nie rozeszłaObie gałęzie mają nowe commity

Rozwiązywanie konfliktu scalania

Gdy obie gałęzie zmieniły te same linie, Git się zatrzymuje.

KrokPolecenieWynik
1Edytuj pliki z konfliktamiWybierz właściwe linie, usuń znaczniki
2git add <file>Oznacza konflikt jako rozwiązany
3git commitKończy scalanie

Najczęstsze pytania o git merge

Jak scalić jedną gałąź z drugą w Git?
Przełącz się na gałąź, do której chcesz scalić (np. git switch main), a potem uruchom git merge feature. Git łączy commity z feature z main przez fast-forward albo, jeśli obie gałęzie się rozeszły, tworząc commit scalający.
Czym różni się fast-forward od commita scalającego?
Fast-forward następuje, gdy twoja bieżąca gałąź nie przesunęła się od chwili, gdy druga gałąź się od niej odgałęziła: Git po prostu przesuwa wskaźnik do przodu, bez nowego commita. Commit scalający powstaje, gdy obie gałęzie mają nowe commity, i łączy ich historie. Użyj --no-ff, żeby zawsze tworzyć commit scalający, albo --ff-only, żeby wymagać fast-forward.
Jak rozwiązać konflikt scalania?
Przy konflikcie Git oznacza kolidujące fragmenty w plikach znacznikami <<<<<<<, ======= i >>>>>>>. Edytuj każdy plik tak, żeby zostawić właściwą treść, i usuń znaczniki, potem dodaj rozwiązane pliki przez git add i zakończ scalanie przez git commit.
Jak cofnąć albo przerwać scalanie?
Jeśli scalanie wciąż trwa (konflikty nie są rozwiązane), uruchom git merge --abort, żeby je anulować i przywrócić stan sprzed merge. Jeśli scalanie zakończyło się lokalnie, git reset --hard ORIG_HEAD przywraca gałąź do pozycji sprzed merge (w przeciwieństwie do HEAD~1 działa poprawnie także po fast-forward, ale usuwa niezatwierdzoną pracę). Jeśli merge jest już wypchnięty, użyj git revert -m 1 <merge-hash>.
Czy mogę to przećwiczyć online?
Tak. Otwórz terminal online i uruchom git merge 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