Подтвердить что ты не робот

Как сделать операцию слияния Git игнорировать идентичные изменения, внесенные в обе ветки?

Предположим, что у нас есть одна ветвь развития "A" и две ветки "B1" и "B2" (оба взяты из A). Допустим, что вы запустили команду кода формата (в нашем случае код очистки ReSharper) для всего проекта в B1 и B2.

Теперь, когда мы пытаемся объединить B2 в B1, Git будет сообщать о конфликтах во всех файлах проекта (в нашем случае довольно много). Когда вы смотрите ближе к каждому конфликту, кажется, что Git думает, что это конфликт, хотя то же самое изменение было сделано как в B1, так и в B2 (?)

Есть ли способ, настраиваемый атрибут driver/ git и т.д., который сделает операцию слияния Git не сообщать о конфликте, если файлы в B1 и B2 точно совпадают?

Возможно, я ошибаюсь, возможно, это проблема с пробелом/строкой (например, разные окончания строк в B1 и B2), и в этом случае я могу найти решение здесь при переполнении стека.

4b9b3361

Ответ 1

Вчера у меня была аналогичная проблема после много вишневого выбора из (и) боковой ветки, где я после слияния с моей основной веткой. Много конфликтов с одинаковыми изменениями. Я решил это с помощью стратегии слияния:

git checkout main-branch
merge --no-commit -s recursive -X ours side-branch

вы можете изменить "наш" на "их". Будьте осторожны, потому что все конфликты автоматически решаются, выбирая "нашу" или "свою" сторону. В моем случае у меня было несколько неправильных слияний из-за этого, и я исправил их вручную. Смотрите другие интересные варианты стратегий слияния здесь: https://www.kernel.org/pub/software/scm/git/docs/git-merge.html

Вы также можете попытаться использовать rebase (в моем случае это не сработало, потому что ветки были слишком разными, и у меня был новый конфликт в каждом новом взаимодействии с rebase). Смотрите это: http://davitenio.wordpress.com/2008/09/27/git-merge-after-git-cherry-pick-avoiding-duplicate-commits/