2010-10-06 29 views
5

Chciałbym zmusić git do zawsze scalania za pomocą (rodzaj) 3-way rozwiązywania konfliktów. Co więcej, chcę zrobić to tak, aby móc wybrać pojedyncze linie.Łączenie wybranych linii kodu za pomocą Git?

W tej chwili łączę dwie gałęzie. Jednak jeśli to możliwe, chciałbym wiedzieć, jak wykonać to zadanie, nawet podczas łączenia wielu oddziałów.

Odpowiedz

2

Git próbuje domyślnie połączyć 3-kierunkowe (strategia recursive dla 2 głowic i strategia octopus dla głów 3+).

Jeśli chcesz zobaczyć 3-drożne opcje rozwiązywania gdy ręcznie łączenie, spróbuj ustawić opcję merge.conflictstyle config do diff3.

(patrz rozdział Konfiguracja z git-merge man page szczegóły dotyczące tej opcji.)

0

blog post "Five advanced Git merge techniques" daje jeszcze więcej szczegółów na ustawienie wyjściowego diff3:

konflikty Turn diff3 wykorzystaniem git config --global merge.conflictstyle diff3.
diff3 styl konflikt dodaje dodatkowy odcinek pomiędzy nowym ||||||| markera i ======= markerów, który wskazuje:

  • oryginalne zawartość sekcji
  • ze swoimi zmianami powyżej
  • ich (gałąź które są scalane) poniżej.

Nawet bez narzędzia diff polecenie git show może pomóc:

Gdy jesteś wewnątrz seryjnej, można użyć specjalnego :N: składni, gdzie N jest liczbą, aby automatycznie wybrać jeden z łączących się rodziców.

  • 1 wybiera wspólna podstawa popełnić (niższy rewizji),
  • 2 wybiera wersję ("mine"), a
  • 3 wybiera swoją wersję (wyższa Rewizja).

Więc git show :3:foobar.txt pokazuje upstream wersję foobar.txt.

Powiązane problemy