Yesterday I was not paying attention to a repository I was in when I used git remote to make a mirror: $ git remote add --mirror bar git://foo/bar I realized my mistake and removed the mirror: $ git remote rm bar Poof. All of my local branches and their reflogs were gone. Reproduce with: # Setup a repository mkdir foo && cd foo && git init echo foo > foo && git add foo && git commit -m foo # Make some branches for demonstration purposes git co -b branch1 git co -b branch2 git co -b branch3 git co master find .git/refs .git/logs .git/refs .git/refs/heads .git/refs/heads/branch1 .git/refs/heads/branch2 .git/refs/heads/branch3 .git/refs/heads/master .git/refs/tags .git/logs .git/logs/HEAD .git/logs/refs .git/logs/refs/heads .git/logs/refs/heads/branch1 .git/logs/refs/heads/branch2 .git/logs/refs/heads/branch3 .git/logs/refs/heads/master # Setup a remote git remote add --mirror bar git://foo/bar # Oops, didn't mean to do that, remove the repo git remote rm bar # poof! find .git/refs .git/logs .git/refs .git/refs/heads .git/refs/tags .git/logs .git/logs/HEAD .git/logs/refs .git/logs/refs/heads I just realized that at least the HEAD log is still there. I missed that originally since: git reflog fatal: bad default revision 'HEAD' (Separate issue, but shouldn't "git reflog" work even if .git/HEAD is invalid?) Anyway, it would seem to me it should be harder to remove local refs. This one was somewhat painful to recover from. Not sure what better behavior would be: should it be harder to do "remote add --mirror" on a repository with content, should "remote rm" on mirrored repository require a --force switch with a stern warning first, or...? Thoughts? j. -- 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