dwim_ref() used to resolve HEAD to its symlink (like refs/heads/master), making a call to 'git reflog delete HEAD@{1}' to actually delete the second entry in the master reflog. This patch makes a special case for HEAD (as that's the only non-branch reflog we keep), fixing the issue. Signed-off-by: Pieter de Bie <pdebie@xxxxxxxxx> --- builtin-reflog.c | 15 ++++++++++++--- t/t1410-reflog.sh | 2 +- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/builtin-reflog.c b/builtin-reflog.c index 0c34e37..5af3f28 100644 --- a/builtin-reflog.c +++ b/builtin-reflog.c @@ -604,9 +604,18 @@ static int cmd_reflog_delete(int argc, const char **argv, const char *prefix) continue; } - if (!dwim_ref(argv[i], spec - argv[i], sha1, &ref)) { - status |= error("%s points nowhere!", argv[i]); - continue; + if (!strncmp(argv[i], "HEAD", 4)) { + ref = xstrdup("HEAD"); + if (!resolve_ref(ref, sha1, 1, NULL)) { + status |= error("%s points nowhere!", argv[i]); + continue; + } + } + else { + if (!dwim_ref(argv[i], spec - argv[i], sha1, &ref)) { + status |= error("%s points nowhere!", argv[i]); + continue; + } } recno = strtoul(spec + 2, &ep, 10); diff --git a/t/t1410-reflog.sh b/t/t1410-reflog.sh index 3b9860e..5b24f05 100755 --- a/t/t1410-reflog.sh +++ b/t/t1410-reflog.sh @@ -175,7 +175,7 @@ test_expect_success 'recover and check' ' ' -test_expect_failure 'delete' ' +test_expect_success 'delete' ' echo 1 > C && test_tick && git commit -m rat C && -- 1.6.0.rc0.320.g49281 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html