Сначала отмените коммит слияния, используя git reset --hard HEAD^
. Обратите внимание, что это уничтожит последний коммит и вернет вашу рабочую копию в состояние предыдущего коммита, поэтому будьте осторожны, чтобы понять, что это будет делать, прежде чем делать это. gitk
может помочь с визуализацией.
Во-вторых, git rm
не делает то, что вы ожидали здесь. Когда у вас возникает конфликт слияния, вы смотрите на файл в полуслитом состоянии с файлом, содержащим маркеры конфликта, чтобы вы могли разрешить конфликт. На этом этапе вас просят исправить рабочую копию до состояния, в котором вы хотите, чтобы выглядел финальный коммит слияния. Удалив файл, вы сказали git, что больше не хотите, чтобы файл присутствовал, а это не то, что вы хотели.
На этом этапе вам нужно обновить конфликтующий файл в вашей рабочей копии до версии, которую вы хотите сохранить. Обычно это делается путем изучения маркеров конфликта и соответствующей настройки файла. В вашем случае, если вы точно знаете, что хотите получить копию из ветви, из которой вы объединяете, вы можете использовать git show :3:elisp/dired-details+.el > elisp/dired-details+.el
для этого. Затем git add elisp/dired-details+.el
, чтобы сообщить git, что вы разрешили конфликт в этом файле, а затем git commit
для завершения.
Здесь git show :3:...
запрашивает версию файла у MERGE_HEAD. Если вам нужна другая версия, вы также можете использовать 1
для общего предка или 2
для "вашей" стороны слияния.