He estado usando Mercurial pero me gustaría hacer una demostración rápida de Git.
¿Cuáles son los equivalentes de Git de:
hg init . # start a project in the current directory
hg addremove # look for any added or deleted files
hg commit -m "comment" # commit any uncomitted changes
hg status # what have i changed since the last commit?
Respuestas:
La piedra rosetta de Git-HG no está mal
Hay algunas otras trampas entre los dos que no se mencionan allí. Esta lista fue tomada de mi propia publicación de blog cuando fui por el otro lado (git -> hg).
Hg
.hgignore
, syntax: glob tiene el mismo comportamiento que .gitignore de git.Git
.git/config
,~/.gitconfig
, el uso git-config para modificar los valores deHg
.hg/hgrc
,~/.hgrc
, el usohg help -c config
Git
git commit -v<br>
Hghg diff | less; hg commit
Git
gitk<br>
Hghg view, or thg from [TortoiseHg][1]
Git
git gui<br>
Hg Mercurial no incluye GUI para seleccionar conjuntos de cambios, solohg record
comando de consola .Git
git rebase<br>
Hg hg rebase . Porquegit rebase --interactive
hay hg histedit , o Mercurial QueuesGit
git push URL ; git remote add origin URL<br>
Hghg push URL; $EDITOR .hg/hgrc ; [paths] default = URL
Git
gitk, git log origin/master..HEAD<br>
Hghg outgoing
Git
git format-patch RANGE<br>
Hghg email -m filename -o
Git
git add . ;
Tenga en cuenta el puntoHg
hg add ;
No se necesita ningún punto.Git
git checkout REVISION-KEY<br>
Hghg update CHANGESET
Solo para llenar los espacios en blanco, algunos de los comandos más útiles de Mercurial:
Hg
hg record
Git
git add -p; git commit
Hg hg inc [URL]
Git Sin equivalente real. Solo puedes hacer el equivalente de
hg pull; hg log -r .:
Hg
hg out URL
Git Por favor agregue si sabe cómo.
Para la resolución de conflictos de fusión, el
hg resolve
comando en Mercurial tiene algunas opciones que cambian el comportamiento:Hg
hg resolve -m FILE
(marca el archivo como resuelto solucionando manualmente el problema del conflicto)Git
git add FILE
Hg
hg resolve -u FILE
marca el archivo como no resuelto.Git
git reset HEAD FILE
para quitar la etapa del archivo.Hg
hg resolve -l
(enumera archivos con conflictos resueltos / no resueltos)Git
git status
: los archivos que se fusionaron limpiamente se agregan al índice automáticamente, los que no tienen conflictosHg
hg resolve FILE
(después de una fusión, intenta volver a fusionar el archivo)Git no tiene equivalente para volver a fusionar que yo sepa.
fuente
hg record
no es muy fácil de usar,hg crecord
(de la extensión crecord ) es una interfaz de usuario de texto basada en maldiciones que es extremadamente fácil de usar.hg resolve
es una de las razones por las que prefiero git. De forma predeterminada,hg resolve
destruye su combinación bien resuelta manualmente si no le pasa argumentos.Nota: una de las mayores diferencias entre Git y Mercurial es la presencia explícita del índice o área de preparación .
Desde Mercurial para usuarios de Git :
El truco es que realmente necesitas comprender el índice para explotar completamente Git. Como nos recuerda entonces este artículo de mayo de 2006 (y sigue siendo cierto ahora):
"Si niega el índice, realmente niega el git".
Ahora, ese artículo contiene muchos comandos que ahora son más simples de usar (así que no confíe demasiado en su contenido;)), pero la idea general sigue siendo:
Está trabajando en una nueva función y comienza a realizar pequeñas modificaciones en un archivo.
En este punto, su próxima confirmación embarcará 2 modificaciones menores en la rama actual
Solo registra los cambios agregados al área de preparación (índice) en este punto, no los cambios principales actualmente visibles en su directorio de trabajo.
La próxima confirmación registrará todos los demás cambios importantes en la nueva rama 'newFrature_Branch'.
Ahora, agregar interactivamente o incluso dividir una confirmación son características disponibles con Mercurial, a través del
hg record
comando ' ' u otras extensiones: necesitará instalarRecordExtension
, o elCrecordExtension
.Pero esto no es parte del flujo de trabajo normal de Mercurial.
Git ve una confirmación como una serie de " cambios en el contenido del archivo " y le permite agregar esos cambios uno a la vez.
Debería estudiar esa característica y sus consecuencias: la mayor parte del poder de Git (como la capacidad de revertir fácilmente una fusión (o dividir el problema en dos o revertir una confirmación) , al contrario de Mercurial ) proviene de ese paradigma de "contenido de archivo".
tonfa (en en el perfil: "Hg dev, pythonist": cifras ...) intervino, en los comentarios:
Oh chico. Aquí vamos de nuevo.
Primero, no estoy aquí para hacer que una herramienta se vea mejor que otra. Encuentro a Hg genial, muy intuitivo, con un buen soporte (especialmente en Windows, mi plataforma principal, aunque también trabajo en Linux y Solaris8 o 10).
El índice es en realidad frontal y central en la forma en que Linus Torvalds trabaja con un VCS :
Ahora, la combinación del índice (que no es una noción que se ve solo en Git) y el paradigma "el contenido es el rey" lo hace bastante único y "git-ish" :
Nota: el "contenido", aquí, se define de la siguiente manera :
De las preguntas frecuentes , las principales ventajas son:
git diff
y validando cada paso pequeño congit add
ogit add -u
.git diff --base
,git diff --ours
,git diff --theirs
.git commit --amend
modificar solo el mensaje de registro si el índice no se ha modificado mientras tantoSi bien tiene razón en general (sobre la parte "probado o compilado"), la forma en que Git le permite bifurcar y fusionar (seleccionar o reajustar) le permite comprometerse con la frecuencia que desee en una rama privada temporal (solo empujada al repositorio de "copia de seguridad" remoto), mientras se vuelven a hacer esas "confirmaciones feas" en una rama pública, con todas las pruebas adecuadas en su lugar.
fuente
Mercurial:
Equivalentes de Git:
fuente
git add -u
más de-A
; -u organizará cambios para todos los archivos rastreados, ignorando los nuevos archivos no rastreados.git status
es equivalente ahg status
. Soy nuevo en Hg y no he logrado que el estado de hg funcione de manera similar al de Git.Es más o menos lo mismo, sin addremove:
Sin embargo, estos son comandos que usaría cuando trabaja solo. Se entra en la ordenada cosas cuando se quiere fusionar sus cambios con el trabajo de otras personas con
git pull
ygit push
, y los comandos relacionados.fuente