Strategie scalania Git: spacje sprawiają, że domyślnie nie pokazuje konfliktu i przynosi nieoczekiwane rezultaty

Po wielu próbach dostałem prosty scenariusz testowy:

a --> b --> c --   (master)
 \              \
  --> d --> b' --> e   (branch)

Gdzie:

b' to wiśniowy wybórbe jestłączyć zmaster.

b' zostało zrobione poc ic ma modyfikacje do tych samych plików cob (d prawdopodobnie nie ma znaczenia).

e może wyglądać bardzo nieoczekiwanie.

Powiedzmy, że wszyscy z nich mają do czynienia z tym samym plikiemfoobar.txt„. Tak wygląda plik w każdym zatwierdzeniu:

// ----------- a
foo

delme

bar

// ----------- b
foo

delme

new

bar

// ----------- c
foo

new

bar

// ----------- b'
foo

delme

new

bar

// ------------ e
foo

new

new

bar

Teraz to było z mojego krótkiego testu właśnie terazdokładny Ustawiać.

Jeśli usuniesz wszystkoprzestrzenie tam nie ma takiego problemu. Scalanie po prostu zarzuci konflikt, jak się spodziewam. Ale nie sądzę, abyśmy używali ustawienia -X dla spacji, czego szukamy tutaj ... A może to?

Tymczasem na moim kodzie produkcyjnym, który był powodem, dla którego zacząłem badać to wszystko, a które nie ma prawie tyle pustych miejsc, muszę zobaczyće zamiast tego szukam czegoś takiego:

// ----------- e
foo

delme

new

bar

Wszystko, co się dzieje zpołączyć nigdy nie oskarżając żadnego konfliktu!

Jeśli git miał wykonać tutaj jakąś magiczną automatyczną scalanie voodoo, to właśnie tak powinien wyglądać:

// ----------- e
foo

new

bar

Ale tak się też nie dzieje.

Jak trochęzrzeczenie się...

Próbowałem teżczytanie instrukcji f, ale nie mogę zrozumieć zbyt wielu punktów w ramach strategii łączenia. Plus tak naprawdę nie mówi, coresolve strategia robi pod maską, na przykład:

Próbuje dokładnie wykryć dwuznaczności scalania krzyżowego i jest uważany za ogólnie bezpieczny i szybki.

To nic nie mówi.

Tekst o domyślnymrecursive jest większy, ale nie mogłem też wydobyć z niego wystarczająco dużo informacji:

Donoszono, że skutkuje to mniejszą liczbą konfliktów scalania bez powodowania błędnych połączeń przez testy przeprowadzone na rzeczywistych zatwierdzeniach scalania pobranych z historii rozwoju jądra Linuksa 2.6.

Zgłoszone? Mamy więc jeden bardzo ciężki test jednostkowy i przyjęliśmy kilka raportów, wszystko w porządku?

Cóż, to jest dla mnie zbyt ogólnikowe.

MyślęMuszę zrobić coś złego! Więc jak mogę to zrobić dobrze?

Co muszę zrobić, aby wrócić do połączenia bez obaw?

questionAnswers(1)

yourAnswerToTheQuestion