Git rebase - несколько git-запросов для разрешения конфликтов слияния в одних и тех же файлах - PullRequest
0 голосов
/ 03 октября 2018

Чтобы сохранить более чистую историю, я пытался сделать git rebase .

У меня было несколько коммитов в моей ветке, и я хотел раздавить их при выполнении ребазирования.

Требуемый результат:

Переход от этого:

Master      A-B
            \
MyBranch     1-2-3-4-5-...-10-..-20

К тому:

Master      A-B-C

Сценарий

Я начал с ветвления с коммита A в мастере и работал над своей веткой:

Master      A
            \
MyBranch     1-2-3-4-5-...-10

Когда я работал над своей веткой, другой коммит B былсделано в мастере:

Master      A-B
            \
MyBranch     1-2-3-4-5-...-10

Чтобы получить хороший CI, я начал с объединения коммита B в myBranch и решил все конфликты, которые у меня были:

Master      A-B
            \  \
             |  ----------- merge
             |             \
MyBranch     1-2-3-4-5-...-10

Тогда у меня было еще несколько коммитов в моей ветке:

Master      A-B
            \  \
             |  ----------- merge
             |             \
MyBranch     1-2-3-4-5-...-10-...-20

Затем я запустил rebase -i (используя Intellij).

На этом этапе я думал, что больше не будет отображаться запрос на слияниевверх, когда B объединено в myBranch.

Но затем Intellij попросил объединить те же файлы, которые я уже объединял ранее.

И когдаЯ решил весь конфликт, он попросил меня сделать это снова.и опять.и опять.С одними и теми же файлами снова и снова.

Кажется, что для каждого коммита (или части коммитов) из 1 - 20 коммитов мне нужно было снова разрешить конфликт слияния.

Толькопосле разрешения конфликтов примерно 7 раз операция закончилась.

Есть ли что-то, чего мне здесь не хватает, чтобы избежать этой ямы?

1 Ответ

0 голосов
/ 03 октября 2018

Обычный rebase -i просто игнорирует коммиты слияния.Это объясняет, почему вы должны были сделать то же разрешение конфликта при перебазировании, что вы уже делали во время слияния.Кроме того, если во время перебазирования возникает конфликт слияния, он будет повторяться при каждом последующем коммите, который затрагивает те же файлы.

Чтобы избежать проблемы, вы можете попробовать git rebase --preserve-merges.

...