This series is a culmination of various draft patches I have sent out recently and have queued in two topics near the tip of 'seen'. The primary objective is to allow undoing conflict resolution that was done via "git rm". When a conflicted path is resolved with "git add" (i.e. replace higher stage index entries with stage #0 entry), "git checkout -m -- path" and "git update-index --unresolve path" worked using the resolve-undo information stored in the index, but a conflicted path that is resolved with "git rm" (i.e. remove higher stage index, without adding any stage #0 entry for the path), these two commands did not work at all, or did not function correctly. Junio C Hamano (7): update-index: do not read HEAD and MERGE_HEAD unconditionally resolve-undo: allow resurrecting conflicted state that resolved to deletion update-index: use unmerge_index_entry() to support removal update-index: remove stale fallback code for "--unresolve" checkout/restore: refuse unmerging paths unless checking out of the index checkout/restore: add basic tests for --merge checkout: allow "checkout -m path" to unmerge removed paths Documentation/git-checkout.txt | 9 ++- Documentation/git-restore.txt | 4 ++ builtin/checkout.c | 15 +++-- builtin/update-index.c | 98 ++++---------------------------- rerere.c | 2 +- resolve-undo.c | 101 ++++++++++++--------------------- resolve-undo.h | 5 +- t/t2030-unresolve-info.sh | 45 +++++++++++++-- t/t2070-restore.sh | 71 ++++++++++++++++++++++- t/t7201-co.sh | 47 +++++++++++++++ 10 files changed, 230 insertions(+), 167 deletions(-) -- 2.41.0-478-gee48e70a82