Помните трехстороннее слияние git в mergetool после слияния?

Это чем-то похоже на git: How to повторить разрешение конфликта слияния (перед фиксацией слияния)? - за исключением того, что я действительно не хочу повторно выполнять слияние.

Это моя проблема: я попытался объединить ветку и получил:

Auto-merging myfile.c
CONFLICT (content): Merge conflict in myfile.c

Хорошо, хорошо, поэтому я делаю как обычно:

git mergetool -t meld myfile.c

Итак, meld открывается, я делаю слияние, вроде все хорошо... за исключением того, что я компилирую, и он падает.

Я вижу точку, где происходит сбой, поэтому я просто хочу вспомнить то же состояние в meld, которое было у меня при последнем сохранении в meld перед его закрытием (что приводит к выходу из mergetool).

Однако, если я просто повторю команду - она ​​отказывается запускаться:

$ git mergetool -t meld myfile.c
No files need merging

Я еще не коммитил, но как обычно после выхода из mergetool в индекс добавилось myfile.c.

Обратите внимание, что я не хочу отменять и повторять слияние, потому что мне нужно пройти около 30+ конфликтов, которые все в порядке и не требуют изменений - я просто хочу повторить то же состояние в meld для myfile.c, что У меня было при последнем сохранении перед выходом из meld и mergetool.

Есть какой-либо способ сделать это?


person sdbbs    schedule 02.02.2021    source источник
comment
Это может плохо работать с meld, но в целом это вариант для mergetool: (1) сохранить текущий объединенный файл где-нибудь (как неотслеживаемый файл, в /tmp, что угодно, вне досягаемости Git). (2) запустите git checkout -m myfile.c, чтобы воссоздать конфликтующее состояние. (3) используйте свой любимый метод слияния, отметив, что у вас есть сохраненный файл, чтобы восстановить большую часть того, что вы уже сделали в этом файле.   -  person torek    schedule 02.02.2021
comment
Возможно, это глупо, но самый простой способ, который я могу придумать, - это скопировать объединенный файл в сторону, git restore -m -- myfile.c, снова запустить команду mergetool и вставить содержимое файла в объединенную панель.   -  person Hasturkun    schedule 02.02.2021
comment
Я не использую объединение (и даже git mergetool) — я просто редактирую файлы напрямую, создаю, тестирую и т. д., пока не буду удовлетворен, а затем запускаю git add на разрешенных файлах. Таким образом, я не во власти различных инструментов...   -  person torek    schedule 02.02.2021