Dopiero zacząłem używać GIT i uważam, że jest cudowny, jednak jestem trochę zdezorientowany, co merge
robi to polecenie.
Powiedzmy, że mamy działający projekt w gałęzi „A”.
Wracam do domu i wprowadzam zmiany w tej gałęzi i zapisuję ją jako „B”. Inny programista wprowadza zmiany w „A” i zapisuje je jako „C”.
Czy istnieje sposób na połączenie dwóch gałęzi „B” i „C”, a następnie zatwierdzenie zmian jako nowej gałęzi, powiedzmy „D”?
A może brakuje mi punktu „scalania”?
Odpowiedzi:
merge
służy do połączenia dwóch (lub więcej) gałęzi.mały przykład:
więc teraz są trzy oddzielne gałęzie (a mianowicie AB i C) z różnymi głowicami
aby uzyskać zmiany z B i C z powrotem do A, wyewidencjonuj A (już zrobione w tym przykładzie), a następnie użyj polecenia merge:
twoja historia będzie wtedy wyglądać mniej więcej tak:
jeśli chcesz połączyć się przez granice repozytorium / komputera, spójrz na
git pull
polecenie, np. z komputera z gałęzią A (ten przykład utworzy dwa nowe zatwierdzenia):źródło
git add conflicting_files
a następniegit commit
Jeśli chcesz scalić zmiany w SubBranch do MainBranch
git checkout MainBranch
git merge SubBranch
źródło
Przypadek: Jeśli chcesz zignorować domyślnie utworzone zatwierdzenie scalające , wykonaj następujące kroki.
Powiedzmy, że nowa gałąź funkcji jest pobierana z mastera, która ma już 2 zatwierdzenia,
Checkout a new feature_branch
Gałąź funkcji dodaje następnie dwa zatwierdzenia ->
Teraz, jeśli chcesz scalić zmiany feature_branch na master,
git merge feature_branch
usiądź na master.Spowoduje to dodanie wszystkich zatwierdzeń do gałęzi głównej (4 w gałęzi głównej + 2 w gałęzi feature_branch = łącznie 6) + dodatkowe zatwierdzenie scalające coś w rodzaju
'Merge branch 'feature_branch'
', gdy master jest rozbieżny .Jeśli naprawdę potrzebujesz zignorować te zatwierdzenia (te wykonane w FB) i dodać wszystkie zmiany wprowadzone w feature_branch jako pojedyncze zatwierdzenie, jak np .
'Integrated feature branch changes into master'
Rungit merge feature_merge --no-commit
.Z --no-commit wykonuje scalanie i zatrzymuje się tuż przed utworzeniem merge commit. Wszystkie dodane zmiany w gałęzi funkcji będą teraz w master i otrzymamy szansę stworzenia nowego zatwierdzenia jako własnego.
Przeczytaj tutaj, aby uzyskać więcej informacji: https://git-scm.com/docs/git-merge
źródło