Стратегии слияния Git: пробелы делают по умолчанию, не показывают конфликтов и дают неожиданные результаты

После многих испытаний я получил этот простой сценарий:

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

Где:

b' это вишняbe этосливаться изmaster.

b' было сделано послеc а такжеc имеет модификации к тем же файлам, что иb (d наверное не имеет значения).

e может легко выглядеть очень неожиданно.

Допустим, все они имеют дело с одним файлом "foobar.txtMsgstr "Вот как файл выглядит при каждом коммите:

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

delme

bar

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

delme

new

bar

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

new

bar

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

delme

new

bar

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

new

new

bar

Теперь, это было из моего краткого теста только сейчас, с этимточный настроить.

Если вы удалите всепространства там такой проблемы нет, Слияние просто обвинит в конфликте, как я и ожидал. Но я не думаю, что использование какой-либо настройки -X для пробелов - это то, что мы ищем здесь ... Или это?

Тем временем, в моем производственном коде, который был причиной, по которой я начал исследовать все это, и в которой не так много пустых мест, я увиделe выглядит примерно так:

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

delme

new

bar

Все, что происходит сникогда не обвиняй ни в каком конфликте!

Если бы git должен был выполнить какое-либо магическое автоматическое слияние вуду здесь, я бы ожидал, что это будет выглядеть так:

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

new

bar

Но этого тоже не бывает.

Как немногоотказ...

Я тоже пробовалчтение руководства f, но я не могу понять слишком много точек в стратегии слияния. Плюс это действительно не говорит, чтоresolve Стратегия делает под капотом, например:

Он пытается тщательно обнаружить неоднозначности слияния и считается в целом безопасным и быстрым.

Это ничего не говорит.

Текст о дефолтеrecursive больше, но я также не смог извлечь из него достаточно информации:

Сообщается, что это приводит к меньшему количеству конфликтов слияния, не вызывая слияний в результате тестов, выполненных на реальных коммитах слияния, взятых из истории разработки ядра Linux 2.6.

Об этом сообщает? Итак, мы прошли 1 очень тяжелый юнит-тест и, судя по нескольким отчетам, все в порядке?

Ну, это слишком расплывчато для меня.

думаюЯ должен делать что-то не так! Итак, как я могу сделать это правильно?

Что мне нужно сделать, чтобы вернуться к слиянию без забот?

Ответы на вопрос(1)

Ваш ответ на вопрос