Как перебазировать и автоматически разрешать конфликты - PullRequest
0 голосов
/ 07 мая 2020

Короче говоря, у меня репо с> 1000 коммитов. Есть строка, которую я хочу изменить в начале, так что, скажем, 900 фиксирует go. В этом случае строка не изменяется в остальных 900 коммитах. Все идет нормально. Использование git rebase --interactive '<commit>' отлично работает, и я внес правку. Однако после нажатия git rebase --continue я столкнулся с конфликтом слияния ... в файле, который совершенно не связан. Насколько я понимаю, это потому, что git переписывает материал, поэтому, когда он достигнет точки, где ранее был конфликт, он заставит вас разрешить этот конфликт заново. Я не помню, что произошло. 850 фиксирует go, поэтому сейчас я не могу его объединить. Кроме того, я не хочу объединять все конфликты, которые когда-либо существовали снова .

Я также пробовал git config --global rerere.enabled 1, но не повезло - я думаю, что это просто записывает разрешения локально, а я этого не делаю. t иметь их локально.

Есть ли способ указать git объединять данные так же, как они были объединены изначально?

Ответы [ 2 ]

1 голос
/ 07 мая 2020

Лучший способ: не делайте этого.

Если вы действительно хотите это сделать, не используйте git rebase; используйте git filter-branch или его новую замену, git filter-repo.

Rebase работает путем копирования коммитов. Новые коммиты являются новыми и, следовательно, разными; поэтому у них разные идентификаторы ha sh. Результатом является новый репозиторий, несовместимый с исходным репозиторием.

То же самое происходит с filter-branch / filter-repo, поэтому вам не следует этого делать, даже если их гораздо проще исправить чем массивное перебазирование.

Если вы действительно хотите это сделать и действительно хотите использовать именно перебазирование, убедитесь, что у вас есть новый параметр --rebase-merges, и используйте его, иначе перебазирование будет «линеаризуйте» / «сгладьте» историю (набор коммитов, включая операции ветвления и слияния), и это приведет к беспорядку.

0 голосов
/ 07 мая 2020

Вы не можете разрешить конфликт автоматически, иначе это не было бы конфликтом

Вы можете использовать флаг -S ours для копирования слияния ИЛИ Вы можете использовать -Xtheirs флаг для использования изменений, сделанных в исходной ветке

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