Отмените разрешение 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, но это выброс. Я просто пытаюсь справиться с конфликтами раньше времени, поэтому, когда я синхронизируюсь с этой командой, мы минимизируем время, которое требуется. Есть смысл?
Ответы
Ответ 1
Вы можете сказать rerere
забыть записанное разрешение для слияния, повторно выполнив слияние и разрешив rerere
применить свое записанное разрешение в дереве работ.
Вы можете проверить a'
, а затем сделать git merge b
, чтобы вернуться в эту ситуацию (вы, вероятно, будете в контрольной группе отдельно взятой головы, так как вы указали хеш фиксации a'
, поэтому будьте в курсе что вы не на ветке).
Затем используйте git rerere forget FILE-WITH-BAD-MERGE
, где указать файл, записанное разрешение конфликта которого необходимо забыть.
forget <pathspec>
Reset разрешения конфликтов, которые ререр записал для текущего конфликта.
(Из документация Git для git -rerere.)