Как явно указать, какие изменения веток следует применять при объединении двух конфликтующих веток в git? - PullRequest
2 голосов
/ 16 июня 2019

У меня есть две ветви в Git. Мастер и функция.

O---O (master)
 \ 
  O (feature)

У меня был текстовый файл, который содержит Master, когда он находится в главном филиале.
Этот же файл содержит feature, когда он находится в заголовке ветви компонента.

Я хочу перебазировать ветку функций на мастер. Поскольку оба они имеют конфликтующие изменения, возникнет конфликт перебазирования (или конфликт слияния).

Я хочу знать, есть ли способ явно сказать git, я хочу, чтобы изменения из функциональной ветви в функциональной ветви во время ребазирования.

Вот что я попробовал:

Image showing setup

Image showing error

Мы ясно видим, что текст ветви объекта перезаписывается текстом основной ветки.

Заранее спасибо:)

1 Ответ

2 голосов
/ 16 июня 2019

Если вы хотите переместить ветку feature в ветку master, с изменениями в ветке feature, чтобы переопределить ветку master в случае любых конфликтов слияния, вы должны передать --strategy-option с theirsвместо ours.

Когда вы извлечены на ветке feature и хотите перебазировать master на feature, git rebase работает путем воспроизведения каждого коммита изветвь feature поверх ветви master.Из-за этого, когда возникает конфликт слияния, сторона, сообщаемая как наша , является ветвью master, а их является рабочей ветвью, то есть ветвью feature.

Из документации git rebase :

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

Так что попробуйте с git rebase master --strategy-option=theirs, и это обеспечит учет изменений ветви feature в случае конфликта слияния.

...