Как избежать конфликта при перебазировании, если последующий коммит разрешает конфликт? - PullRequest
0 голосов
/ 31 октября 2018

Как легко перебазировать ветку с конфликтами, которые уже исправлены в конце перебазировки в git?

Например, я нахожусь в ветви функций, и в основной ветке есть 2 коммита для перебазирования.
Первый коммит создает конфликт, но если перебазировка соединила оба коммита вместе, конфликт после второго коммита не возникнет.
Так как же перебазировать это в целом вместо того, чтобы перебрасывать его 1 на 1 и разрешать конфликты дважды?

Я думаю, что где-то нужно ответить, но я ничего не могу найти, потому что названия всех похожих вопросов расплывчаты.

Ответы [ 2 ]

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

Вы должны раздавить коммиты в вопросе до того, как вы перейдете на мастера. Сделайте это с интерактивной перебазировкой на самого последнего общего предка:

git rebase -i $(git merge-base master HEAD)

Таким образом, комбинированный коммит, представленный в виде патча, может быть применен к master чисто:

git rebase master

Оригинальный первый коммит, который вы пытаетесь применить к мастеру, будет конфликтным, простым и понятным. Вы должны быть в состоянии проверить это «состояние» после его завершения, поэтому Git заставляет вас разрешить конфликт. Ваш фундаментальный вопрос сводится к тому, «как я могу применить патч, содержащий конфликт, не создавая конфликт», чего вы явно не можете сделать. Сначала уничтожая коммиты, вы избавляетесь от необходимости применять конфликтующий коммит.

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

Лучший способ состоит в том, чтобы сначала раздавить два коммита (используя интерактивный rebase), а затем перебазировать его на мастер.

  1. раздавить последние 2 коммита с помощью интерактивной перебазировки:

    git rebase -i head~2
    

    выберите сквош (или исправление) для 2-го коммита

  2. , а затем перебазировать на мастер

    git rebase master
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...