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


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow