Git Merge рекурсивный не делает то, что я хочу

StackOverflow https://stackoverflow.com/questions/1800087

  •  05-07-2019
  •  | 
  •  

Вопрос

Есть ли способ заставить 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 .

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top