Well, that's one biased post.<p>In "bookmarks are not enough", the author claims that that the commits just stay there after deleting the bookmark - the horror! Actually, the same thing happens in git. Commit unreachable via names will stay around until you run garbage collection. You can still see them in reflog.<p>"Anonymous heads" - yes, that exactly why `hg push` warns you. Exactly the same reason rebase warns you that it's destructive and pull rebase isn't the default. So you don't make a mess by accident. If you want to see what's available in the remote repository, like after `git fetch`, you can see the new commits via `hg incoming`.<p>I can't agree with "Nothing is lost" either - the tree he presents is trivial. Give it a go on a repository with 10+ topic branches which are re-synched to trunk a number of times and with more than 2 commits. Suddenly getting everything labelled with branch names is much more useful.<p>I'm not against one system or another, but having a fair explanation of both systems would be nicer than a blog saying pretty much "it's different than git, therefore it's bad". In the end it's down to personal preferences. Some people find "branch labels" more comfortable to work with, some prefer "branch bookmarks". That's it. Yet every once it a while we get a long "but this is so much worse than git!" explanation. Great, I'll keep using hg because I like it better, thank you very much.