Как мне разрешить один и тот же конфликт слияния в многочисленных файлах? - PullRequest
0 голосов
/ 14 декабря 2018

Предположим, у меня один конфликт в 200 файлах:

<<<<<<< HEAD
/*  Version         1.0.0       */
/*  Date            2017-05-30  */
=======
/*  Version         1.0.1       */
/*  Date            2018-11-30  */
>>>>>>> release/1.0.1

Я точно знаю, что мне нужна версия 1.0.1 во всех файлах.Но просто использовать --theirs для всех файлов невозможно, поскольку у меня есть и другие модификации, которые должны быть сохранены от --ours.

. Есть ли способ просто разрешить этот конфликт с --theirs, а затем вручнуюразрешить другие конфликты (всего лишь из нескольких файлов) вручную?

1 Ответ

0 голосов
/ 14 декабря 2018

Единственный способ заставить git делать то, что вы просите во время разрешения конфликта, - это написать собственный драйвер слияния, который обнаруживает и «исправляет» информацию о версии перед вызовом обычного merge-file процесса.Это выполнимо, но требует небольшой настройки (см. git attributes документы в атрибуте merge, где говорится о пользовательских драйверах слияния).

Если вы можете допустить дополнительный шаг, это может быть прощепросто написать сценарий (что-то вроде perl или даже awk было бы хорошо для этой задачи), который находит и исправляет этот конкретный конфликтный блок, и запускает этот сценарий через конфликтующий вывод слияния, прежде чем вручную разрешать оставшиеся изменения.Самым большим недостатком этого - и причиной, по которой я мог бы рассмотреть подход драйвера слияния - является то, что если файл конфликтует только из-за блока версии, у вас не будет ручной работы, но файл все равно будетбыть в конфликтном состоянии - поэтому вам придется проверять каждый файл, чтобы увидеть, осталось ли еще разрешить конфликт.

Мне кажется, может быть, стоит пересмотреть аспекты вашего рабочего процессачто заставляет вас ожидать этих конфликтов.

...