Git Merge рекурсивный не делает то, что я хочу
Вопрос
Есть ли способ заставить Git принудительно разрешить разрешение файла, когда файл редактировался в обеих ветках?
Моя проблема в том, что мне нужны некоторые изменения из одной ветви, а некоторые - из другой. Оказывается, эти изменения не всегда наступают друг на друга, но алгоритм не всегда выбирает правильное изменение.
Одна вещь, которую я заметил, это то, что базовый файл в трехстороннем слиянии - это не то, что я ожидал. Возможно ли, чтобы Git использовал выбранный файл из одной ветви в качестве базы?
Нет правильного решения
Другие советы
Если git обнаруживает конфликты в файле, он всегда будет просить вас отредактировать (или использовать инструмент слияния), чтобы исправить конфликты. В этом случае вы можете исправить это так, как вам нравится, прежде чем ставить его.
Если git не обнаружил конфликтов в определенном файле, но обнаружил конфликты в другом месте, то вы всегда можете исправить этот конкретный файл и добавить исправления ( git add
) перед выполнением коммита слияния. р>
В этом случае вы можете получить доступ к двум различным родительским версиям файла с помощью git show HEAD: путь / к / файлу
и git show MERGE_HEAD: путь / к / файлу
. Вы можете перенаправить вывод git show
на временные файлы, если хотите открыть их, скажем, в редакторе.
Как только вы исправите файл и разрешите любые другие конфликты, вы можете выполнить исправление ( git add
) и сделать коммит слияния ( git commit
). р>
Если git не обнаружил никаких коммитов, он сделает коммит слияния без дальнейших запросов.
В этом случае вы все еще можете исправить свой файл. Две родительские версии доступны через git show HEAD: путь / к / файлу
и git show HEAD ^ 2: путь / к / файлу
.
Как только вы исправите файл, вы можете выполнить этап ( git add
) и повторить коммит слияния с помощью git commit --amend
.