Several "recovery" commands outright fail or do not fully recover when directory-file conflicts are present. This includes: * git read-tree --reset HEAD * git am --skip * git am --abort * git merge --abort (or git reset --merge) * git reset --hard It turns out that multiple invocations of 'git reset --hard' can serve as a functional workaround, but I've been annoyed with that workaround for years. This time, I found the problem, and this patch series provides a fix for all of these. Elijah Newren (2): t1015: demonstrate directory/file conflict recovery failures read-cache: fix directory/file conflict handling in read_index_unmerged() read-cache.c | 13 +-- t/t1015-read-index-unmerged.sh | 123 +++++++++++++++++++++++++++ t/t6020-merge-df.sh | 3 - t/t6042-merge-rename-corner-cases.sh | 1 - 4 files changed, 131 insertions(+), 9 deletions(-) create mode 100755 t/t1015-read-index-unmerged.sh -- 2.18.0.138.g557c5d94c.dirty