Szukaj…
Składnia
- git merge another_branch [opcje]
- git merge --abort
Parametry
Parametr | Detale |
---|---|
-m | Wiadomość do włączenia w zatwierdzenie scalania |
-v | Pokaż pełne dane wyjściowe |
--abort | Spróbuj przywrócić wszystkie pliki do ich stanu |
--ff-only | Przerywa natychmiast, gdy wymagane byłoby zatwierdzenie przez scalenie |
--no-ff | Wymusza utworzenie scalenia-zatwierdzenia, nawet jeśli nie było to obowiązkowe |
--no-commit | Udaje, że połączenie nie pozwoliło na sprawdzenie i poprawienie wyniku |
--stat | Pokaż diffstat po zakończeniu scalania |
-n / --no-stat | Nie pokazuj diffstat |
--squash | Umożliwia pojedyncze zatwierdzenie w bieżącym oddziale ze scalonymi zmianami |
Scal jedną gałąź w drugą
git merge incomingBranch
Spowoduje to scalenie gałęzi incomingBranch
z gałęzią, w której się obecnie znajdujesz. Na przykład, jeśli jesteś w trybie master
, wówczas incomingBranch
zostanie scalony w master
.
Scalanie może w niektórych przypadkach powodować konflikty. Jeśli tak się stanie, zobaczysz komunikat Automatic merge failed; fix conflicts and then commit the result.
Będziesz musiał ręcznie edytować pliki będące w konflikcie lub cofnąć próbę scalenia, uruchom:
git merge --abort
Automatyczne łączenie
Gdy zatwierdzenia w dwóch gałęziach nie powodują konfliktu, Git może je automatycznie scalić:
~/Stack Overflow(branch:master) » git merge another_branch
Auto-merging file_a
Merge made by the 'recursive' strategy.
file_a | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Przerwanie scalenia
Po rozpoczęciu scalania możesz chcieć zatrzymać scalanie i przywrócić wszystko do stanu sprzed scalenia. Użyj --abort
:
git merge --abort
Zachowaj zmiany tylko z jednej strony scalenia
Podczas scalania możesz przekazać --ours
lub --theirs
aby --theirs
git checkout
aby pobrać wszystkie zmiany dla pliku z jednej lub drugiej strony scalenia.
$ git checkout --ours -- file1.txt # Use our version of file1, delete all their changes
$ git checkout --theirs -- file2.txt # Use their version of file2, delete all our changes
Połącz z zatwierdzeniem
Domyślne zachowanie występuje wtedy, gdy scalenie jest rozpatrywane jako przewijanie do przodu, aktualizuj tylko wskaźnik gałęzi, bez tworzenia zatwierdzenia scalania. Użyj --no-ff
aby rozwiązać.
git merge <branch_name> --no-ff -m "<commit message>"
Znajdowanie wszystkich oddziałów bez scalonych zmian
Czasami możesz mieć gałęzie leżące wokół, które już miały swoje zmiany scalone w master. Znajduje to wszystkie gałęzie, które nie są master
, które nie mają unikalnych zatwierdzeń w porównaniu z master
. Jest to bardzo przydatne do znajdowania gałęzi, które nie zostały usunięte po scaleniu PR w master.
for branch in $(git branch -r) ; do
[ "${branch}" != "origin/master" ] && [ $(git diff master...${branch} | wc -l) -eq 0 ] && echo -e `git show --pretty=format:"%ci %cr" $branch | head -n 1`\\t$branch
done | sort -r