Стратегии слияния Git: пробелы делают по умолчанию, не показывают конфликтов и дают неожиданные результаты
После многих испытаний я получил этот простой сценарий:
a --> b --> c -- (master)
\ \
--> d --> b' --> e (branch)
Где:
b'
это вишняb
e
этосливаться изmaster
.b'
было сделано послеc
а такжеc
имеет модификации к тем же файлам, что иb
(d
наверное не имеет значения).
e
может легко выглядеть очень неожиданно.
Допустим, все они имеют дело с одним файлом "foobar.txt
Msgstr "Вот как файл выглядит при каждом коммите:
// ----------- 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 очень тяжелый юнит-тест и, судя по нескольким отчетам, все в порядке?
Ну, это слишком расплывчато для меня.
думаюЯ должен делать что-то не так! Итак, как я могу сделать это правильно?
Что мне нужно сделать, чтобы вернуться к слиянию без забот?