728 votos

¿Cuál es la Diferencia Entre Mercurial y Git?

He estado usando git por algún tiempo ahora en Windows (con msysGit) y me gusta la idea de distribuido de control de código fuente. Recientemente he estado mirando Mercurial (hg) y se ve interesante. Sin embargo, yo no puedo envolver mi cabeza en torno a las diferencias entre hg y git.

Alguien ha hecho una lado a lado la comparación entre el git y hg? Estoy interesado en saber lo que difiere de hg y git sin tener que saltar a un fanboy de discusión.

345voto

jfs Puntos 13605

Estos artículos pueden ser de ayuda:

Edit: Comparación de Git y Mercurial a las celebridades que parece ser una tendencia. He aquí una más:

238voto

Martin Geisler Puntos 44779

Yo trabajo en Mercurial, pero fundamentalmente creo que ambos sistemas son equivalentes. Ambos trabajan con el mismo abstracciones: una serie de instantáneas (cambios) que componen la historia. Cada conjunto de cambios sabe de donde vino (el padre de cambios) y puede tener muchos niños conjuntos de cambios. La reciente hg-git extensión proporciona un puente de doble vía entre Mercurial y Git y tipo de muestra de este punto.

Git tiene un fuerte enfoque en la mutación de esta historia gráfica (con todas las consecuencias que conlleva), mientras que Mercurial no fomentar la reescritura de la historia, pero es fácil de hacer y las consecuencias de hacerlo son exactamente lo que usted debe esperar a ser (es decir, si puedo modificar un conjunto de cambios que ya se tiene, el cliente se vea como nueva si se tira de mí). Así Mercurial tiene un sesgo hacia los no-destructiva de comandos.

A la luz-peso de las ramas, Mercurial ha apoyado a los repositorios con múltiples ramas , ya..., siempre creo. Repositorios Git con múltiples ramas son exactamente eso: varios separaron hebras de desarrollo en un único repositorio. Git, a continuación, agrega los nombres de estas líneas y le permiten consultar estos nombres de manera remota. Los Marcadores de extensión de Mercurial añade nombres locales, y con Mercurial 1.6, puede mover estos marcadores en torno al empujar/tirar..

Yo uso Linux, pero al parecer TortoiseHg es más rápido y mejor que el Git equivalente en Windows (debido a un mejor uso de los pobres de Windows sistema de archivos). Tanto http://github.com y http://bitbucket.org proporcionar alojamiento online, el servicio en Bitbucket es grande y sensible (no he probado en github).

Elegí Mercurial ya que se siente limpio y elegante-me pusieron por el shell/Perl/scripts de Ruby tengo con Git. Trate de tomar un vistazo a las git-instaweb.sh archivo si quieres saber a qué me refiero: es un shell script que genera un Ruby script, que creo que ejecuta un servidor web. La secuencia de comandos de shell genera otra secuencia de comandos de shell para lanzar el primer script en Ruby. También hay un poco de Perl, para la buena medida.

Me gusta el blog en el que se compara Mercurial y Git con James Bond y MacGyver -- Mercurial es algo más baja que la clave de Git. A mí me parece, que la gente que usa Mercurial no son tan fácilmente impresionado. Esto se refleja en cómo cada sistema de hacer lo que Linus se describe como "la mejor combinación de los siglos!". En Git puede combinar con una relación de repositorio haciendo:

git fetch <project-to-union-merge>
GIT_INDEX_FILE=.git/tmp-index git-read-tree FETCH_HEAD
GIT_INDEX_FILE=.git/tmp-index git-checkout-cache -a -u
git-update-cache --add -- (GIT_INDEX_FILE=.git/tmp-index git-ls-files)
cp .git/FETCH_HEAD .git/MERGE_HEAD
git commit

Los comandos de aspecto bastante arcano a mi ojo. En Mercurial hacemos:

hg pull --force <project-to-union-merge>
hg merge
hg commit

Observe cómo la Mercurial comandos son simples y no especial a todos -- la única cosa inusual es el --force indicador hg pull, que es necesario, ya que la Mercurial va a abortar lo contrario cuando se tire de una relación de repositorio. Es diferencias como este los que hacen Mercurial parece más elegante para mí.

73voto

Aristotle Pagaltzis Puntos 43253

Git es una plataforma, Mercurial es "sólo" de una aplicación. Git es un versionado del sistema de ficheros de la plataforma que le sucede a la nave con un DVCS de la aplicación en el cuadro, pero como normal para la plataforma de aplicaciones, es más complejo y tiene más ásperas aristas que se centró hacen las aplicaciones. Pero esto también significa git VCS es muy flexible, y hay una enorme profundidad de código no-fuente-control de las cosas que puedes hacer con git.

Esa es la esencia de la diferencia.

Git se entiende mejor desde el suelo, desde el repositorio de formato. Scott Chacon el Git de Hablar es un excelente manual para esto. Si intenta utilizar git sin saber lo que está pasando bajo el capó, acabará confundido en algún momento (a menos que usted se pega a sólo funcionalidad muy básica). Esto puede sonar estúpido, cuando todo lo que quieres es un DVCS para su programación diaria rutina, pero el genio de git es que el repositorio es en realidad algo muy sencillo y que se puede entender git toda la operación con bastante facilidad.

Para algunos más tecnicismo orientado a las comparaciones, los mejores artículos que he visto personalmente son Dustin Sallings':

Él ha utilizado realmente tanto DVCSs ampliamente y las entiende bien y terminó prefiriendo git.

51voto

mmiika Puntos 3027

La gran diferencia es que en Windows. Mercurial es compatible de forma nativa, Git no lo es. Usted puede obtener muy similar hosting github.com con bitbucket.org (en realidad, incluso mejor, como obtener gratis un repositorio privado). Yo estaba usando msysGit por un tiempo, pero se mudó a Mercurial y han sido muy feliz con ella.

38voto

Maurice Flanagan Puntos 2950

Si usted es un desarrollador de Windows buscando básica desconectado de la revisión de control, vaya con Hg. He encontrado Git a ser incomprensible mientras Hg fue simple y bien integrado con la shell de Windows. He descargado Hg y seguido este tutorial (hginit.com) - diez minutos más tarde, yo tenía un local de repos y pudo volver a trabajar en mi proyecto.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X