The other answers don't actually answer the question, which is: why don't Git and Mercurial work the same? Is there a philosophical difference?
In Mercurial, pull
is the opposite of push
: it syncs the local repo with a remote repo without touching the working copy. So it's more consistent.
In Git, pull
is a fetch
plus a merge
, or a pull
plus an update
in Mercurial terms. Usually this is what you want. So it's more efficient.
The Distributed Version Control University talk has a slide at the 4-minute mark that clearly demonstrates the way Mercurial works. Michael Ernst's Version control concepts and best practices has a similar diagram (included below):
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…