Я сделал то же самое сегодня и принял другой подход (после проб и ошибок), чтобы вернуться в состояние непосредственно перед копированием, чтобы я мог продолжить разрешение конфликтов и завершить объединение.
Во-первых,После удаления частичного слияния в целевой ветви я записал список файлов с остающимися конфликтами (текстовый файл или вкладка редактора).Это просто список неподготовленных файлов после удаления, так как файлы с уже разрешенными конфликтами были бы помещены перед сохранением.
$ git status
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: myproject/src/main/java/com/acme/package3/Class3.java
# modified: myproject/src/main/java/com/acme/package3/Class4.java
#
Затем я создал патч и сбросил ветку обратно до предварительной.состояние слияния:
$ git diff HEAD > ~/merge-with-resolved-conflicts.patch
$ git reset --hard HEAD
Затем я создал временную ветвь (полученную из ветви назначения слияния) и применил патч:
$ git checkout -b my-temp-branch
$ git apply ~/merge-with-resolved-conflicts.patch
$ git commit -a -m "Merge with resolved conflicts"
Итак, ГОЛОВА my-temp-branchтеперь содержит все, что было объединено, включая файлы с разрешенными конфликтами и файлы с оставшимися конфликтами.
Затем я вернулся к исходной ветви, снова слился и посмотрел на состояние git
$ git checkout my-branch
$ git merge other-branch
$ git status
Статус показывает полный список файлов с конфликтами:
# Unmerged paths:
# (use "git add <file>..." to mark resolution)
#
# both modified: myproject/src/main/java/com/acme/package1/Class1.java
# both modified: myproject/src/main/java/com/acme/package2/Class2.java
# both modified: myproject/src/main/java/com/acme/package3/Class3.java
# both modified: myproject/src/main/java/com/acme/package3/Class4.java
#
Теперь мне нужно было сравнить эти два списка файлов.Любые файлы во втором списке, но не в первом, уже были разрешены (в этом примере Class1.java и Class2.java).Поэтому для каждого из этих файлов я вытащил версию с конфликтами, разрешенными из временной ветви (например, cherry-pick, но для отдельных файлов, а не для целого коммита):
$ git checkout my-temp-branch myproject/src/main/java/com/acme/package1/Class1.java
$ git checkout my-temp-branch myproject/src/main/java/com/acme/package2/Class2.java
Сделав это, яперед сбоем вернулась в состояние, чтобы я мог возобновить разрешение оставшихся конфликтов и зафиксировать слияние.