Заставить Git всегда выбирать более новую версию во время слияния?


103

Предположим, я mergegit, и есть конфликт слияния.

У меня вопрос: как я могу заставить git всегда выбирать более новую версию конфликтующего кода, чтобы мне не приходилось разрешать конфликт вручную?



но я действительно хочу выполнить слияние (не переопределить коммиты), но дополнительно разрешить конфликты автоматически.
bartek

Ответы:


189

Это не совсем «более новая» версия, но вы можете указать git, чтобы он всегда предпочитал версию в текущей ветке, используя git merge branch -X ours, или предпочитать версию объединяемой ветки, используя git merge branch -X theirs.

Откуда man git-merge:

наши:

Эта опция принудительно автоматически разрешает конфликтующие блоки, отдавая предпочтение нашей версии. Изменения из другого дерева, которые не конфликтуют с нашей стороной, отражаются в результате слияния. Для бинарного файла все содержимое берется с нашей стороны.

их:

Это противоположность «нашему».


9
ours- theirs!! Просто скажите это, и вы поймете, что делает команда! Я люблю Git! : D
Haywire

14
Примечание: если вы уже использовали git merge branch, вам нужно будет git merge --abortсделать это, прежде чем вы сможете это сделать.
Джон Дворжак,

1
У меня не работает. Он по-прежнему прерывает слияние. error: The following untracked working tree files would be overwritten by merge:Я даже не знаю, почему эти файлы вообще находятся в этой ветке, но они должны быть перезаписаны, а git отказывается.
mcv

2
Если они не отслеживаются, вам нужно git addсначала удалить (или ) их. Прочтите немного git clean, это может вам в этом помочь.
Ренато Заннон

После запуска git merge ours, если есть какие-то конфликтные файлы, будет ли журнал? и я мог бы отследить git merge ours?
zx1986

20

Я использую это,

git fetch --prune
git reset --hard origin/master

2
Это решение помогло мне исправить не объединенные конфликты, когда все, что я хотел, это переопределить с помощью основной ветки. Я использовал git reset --hard master (от местного)
Хуан Мендес
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.