Git Merge рекурсивный не делает то, что я хочу - PullRequest
1 голос
/ 26 ноября 2009

Есть ли способ заставить Git принудительно разрешить разрешение файла, когда файл редактировался в обеих ветвях?

Моя проблема в том, что я хочу, чтобы некоторые изменения были из одной ветви, а некоторые - из другой. Оказывается, эти изменения не всегда наступают друг на друга, но алгоритм не всегда выбирает правильное изменение.

Одна вещь, которую я заметил, это то, что базовый файл в трехстороннем слиянии - это не то, что я ожидал. Возможно ли, чтобы Git использовал выбранный файл из одной ветви в качестве базы?

1 Ответ

2 голосов
/ 26 ноября 2009

Если git обнаруживает конфликты в файле, он всегда будет просить вас отредактировать (или использовать инструмент слияния), чтобы исправить конфликты. В этом случае вы можете исправить это так, как вам нравится, прежде чем ставить его.

Если git не обнаружил конфликтов в определенном файле, но обнаружил конфликты в другом месте, то вы всегда можете исправить этот конкретный файл и добавить исправления (git add) перед выполнением коммита слияния.

В этом случае вы можете получить доступ к двум различным родительским версиям файла через git show HEAD:path/to/file и git show MERGE_HEAD:path/to/file. Вы можете перенаправить вывод git show во временные файлы, если хотите открыть их, скажем, в редакторе.

Как только вы исправите файл и разрешите любые другие конфликты, вы можете установить исправление (git add) и сделать коммит слияния (git commit).

Если git не обнаружил никаких коммитов, он сделает коммит слияния без дальнейших запросов.

В этом случае вы все еще можете исправить свой файл. Две родительские версии доступны через git show HEAD:path/to/file и git show HEAD^2:path/to/file.

После того, как вы исправили файл, вы можете поставить (git add) и повторить коммит слияния с помощью git commit --amend.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...