Dos linajes de diseño
El CLI de Git emergió orgánicamente. El CLI de Mercurial fue diseñado top-down por Matt Mackall.
Consistencia de comandos
Mercurial usa verbo-nombre consistentemente. Las opciones son consistentes: -r siempre significa revisión, -m siempre mensaje. Los verbos de Git se solapan.
Texto de ayuda
hg help commit # enfocado, corto, relevante
git help commit # página de manual exhaustiva
Mensajes de error
Mercurial famosamente tiene errores más amigables.
Defaults seguros
Los comandos de Mercurial rara vez destruyen datos sin una extensión explícita. Los defaults de Git son más afilados.
Salida del status
# Mercurial: mínimo, comprensible
hg status
M src/checkout.js
A src/payment.js
? notes.txt
# Git: más estados, más cargado
git status
Comandos de branching
# Mercurial: named branches conceptualmente pesados
hg branch feature/login
hg commit -m "Start"
# Mercurial: bookmarks para branching estilo Git
hg bookmark feature
hg commit -m "Start"
# Git
git checkout -b feature/login
git commit -m "Start"
Reescribir historia
Git: git rebase -i, integrado, sin opt-in. Mercurial: hg histedit, requiere habilitar la extensión.
Hooks y extensiones
Las extensiones de Mercurial se conectan limpiamente vía Python. Los hooks de Git son scripts shell.
Tab completion
Ambos envían completados para shells principales.
El costo de la falta de familiaridad
Para alguien fluido en Git, los comandos renombrados de Mercurial se sienten restrictivos. Para alguien nuevo en ambos, Mercurial es más fácil el primer día.
Mejoras modernas
Git ha estrechado la brecha UX con mejores mensajes de error, switch y restore, partial clone.