Стратегии слияния Git: пробелы делают по умолчанию, не показывают конфликтов и дают неожиданные результаты
После многих испытаний я получил этот простой сценарий:
a --> b --> c -- (master)
\ \
--> d --> b' --> e (branch)
Куда:
b'
вишняb
e
этосливаться от .master
b'
было сделано послеc
а такжеc
имеет модификации к тем же файлам, что и (b
d
вероятно нене имеет значения).
e
может легко выглядеть очень неожиданно.
Позволять'Скажи все о 'они имеют дело с одним файлом ""foobar.txt
, Вот как файл выглядит в каждом коммите:
// ----------- 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
Все, что происходит сникогда не обвиняй ни в каком конфликте!
Если бы мерзавец мог сделать здесь какое-нибудь магическое авто слияние вуду, это то, что яЯ ожидаю, что это будет выглядеть так:
// ----------- e
foo
new
bar
Но этого тоже не бывает.
Как немногоотказ...
Я тоже пробовалчтение руководства f, Но я могу'в стратегиях слияния не слишком много понимаешь Плюс это нене могу сказать, чтоresolve
Стратегия делает под капотом, например:
Он пытается тщательно обнаружить неоднозначности слияния и считается в целом безопасным и быстрым.
Это ничего не говорит.
Текст о дефолтеrecursive
больше, но я тоже не могизвлечь из него достаточно информации:
Сообщается, что это приводит к меньшему количеству конфликтов слияния, не вызывая слияний в результате тестов, выполненных на реальных коммитах слияния, взятых из истории разработки ядра Linux 2.6.
Об этом сообщает? Таким образом, мы получили 1 очень тяжелый юнит-тест и предположили, чтовсе в порядке?
Ну, этоэто слишком расплывчато для меня.
Я думаюЯ должен делать что-то не так! Итак, как я могу сделать это правильно?
Что мне нужно сделать, чтобы вернуться к слиянию без забот?