Подтвердить что ты не робот

Отмените разрешение git reerere, которое было выполнено в rebase

Хорошо, мне очень нравится команда git rerere. Хотя, я на самом деле не использовал его так, как если бы он автоматически записывал мои конфликты и разрешал их для меня. Тем не менее, я испортил одно из моих разрешений в конфликте во время довольно большой перезагрузки (перезагрузка действительно устаревшей ветки с последней версией).

feature -> a - b - c - d

release -> e - f - g - h

rebase/feature -> e - f - g - h - a' - b' - c' - d'

Итак, скажем, например, что b 'имеет неправильное слияние (спасибо мне!), и я хочу перезаписать его. Как мне это сделать? Я видел опцию git checkout --conflict, указанную в Rerere Your Boat, но я не слишком понимаю, как это работает, и если это применимо здесь, Может быть, мне нужно проверить состояние конфликта слияния и запустить git rerere, как только я правильно разрешу этот конфликт?

Обычно я просто берусь за верхушку ветки rebase, но это выброс. Я просто пытаюсь справиться с конфликтами раньше времени, поэтому, когда я синхронизируюсь с этой командой, мы минимизируем время, которое требуется. Есть смысл?

4b9b3361

Ответ 1

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

Вы можете проверить a', а затем сделать git merge b, чтобы вернуться в эту ситуацию (вы, вероятно, будете в контрольной группе отдельно взятой головы, так как вы указали хеш фиксации a', поэтому будьте в курсе что вы не на ветке).

Затем используйте git rerere forget FILE-WITH-BAD-MERGE, где указать файл, записанное разрешение конфликта которого необходимо забыть.

forget <pathspec>
Reset разрешения конфликтов, которые ререр записал для текущего конфликта.

(Из документация Git для git -rerere.)