Принудительная перебазировка git для принятия моей версии после первоначального конфликта слияния

#git #merge

#git #слияние

Вопрос:

Вот сценарий перебазирования / слияния / продолжения git, для которого требуется более целесообразный подход:

Дано: файл, в котором есть изменения как в текущей ветке, так и в ветке, на которую выполняется перебазирование.

Уже выполнено: слияние файлов вручную.

Сложность: кажется, что следующая команда требуется несколько раз: она находит только небольшую часть «требуемых» (в соответствии с git) изменений, которые необходимо объединить за один раз:

     git rebase --continue
  

Желаемый результат: попросите Git просто «принять» файл, который у меня есть в
существующей ветке.

Что было опробовано: после первоначальной rebase первоначальной версии файла была скопирована поверх конфликтующей версии слияния.

Что произошло: после git rebase --continue того, как файл все еще конфликтует, но с другим набором конфликтов слияния. Этот процесс повторяется несколько раз и еще не завершен.

Можем ли мы «перейти к делу» и просто принять обновленный мной файл?

Ответ №1:

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

Вы можете либо продолжить, как и раньше, либо выбрать сквош своих коммитов и тем самым избежать необходимости генерировать несколько коммитов и объединять только один раз.

Комментарии:

1. Спасибо за объяснение, почему это происходит. Я просто нажал git add * и git rebase --continue несколько раз игнорировал на данный момент, что файл был «беспорядочным» . А затем после последней итерации скопировано по всему файлу.

Ответ №2:

Взгляните на git rerere

https://git-scm.com/2010/03/08/rerere.html

Вот суть (взято из этой статьи):

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

Комментарии:

1. забыл об этом — спасибо! О, у меня это уже было: git config --global rerere.enabled возвращает true