Usando Git, ¿cómo puedes encontrar la diferencia entre la versión actual y la última?
git diff last version:HEAD
Usando Git, ¿cómo puedes encontrar la diferencia entre la versión actual y la última?
git diff last version:HEAD
Respuestas:
Realmente no entiendo el significado de "última versión".
Como se puede acceder al commit anterior con HEAD ^, creo que está buscando algo como:
git diff HEAD^ HEAD
A partir de Git 1.8.5, @es un alias para HEAD, por lo que puede usar:
git diff @~..@
Lo siguiente también funcionará:
git show
Si desea conocer la diferencia entre head y cualquier commit, puede usar:
git diff commit_id HEAD
Y esto lanzará su herramienta visual diff (si está configurada):
git difftool HEAD^ HEAD
Como la comparación con HEAD es predeterminada, puede omitirla (como lo señala Orient ):
git diff @^
git diff HEAD^
git diff commit_id
~debe usar el carácter en lugar de ^.@es un alias para HEAD. Y puesto ~y ^son los mismos cuando sólo se va uno comprometerse atrás, me parece git diff @~..@mucho más fácil de escribir.
git showes aún más fácil, ya que @~..@es lo que se muestra por defecto.
git showsimplemente imprime el mensaje de confirmación, no genera una diferencia de los cambios específicos, al menos en Git 2.5.4 (Apple Git-61), por lo que en realidad no sería una respuesta a la pregunta del OP.
git showes que si se HEADtrata de una confirmación de fusión, no obtendrá lo que espera, ya que la confirmación de fusión en sí misma puede no tener ningún cambio. git diff HEAD^ HEADmostrará los cambios reales entre las versiones
Suponiendo que "versión actual" es el directorio de trabajo (modificaciones no confirmadas) y "última versión" es HEAD(últimas modificaciones confirmadas para la rama actual), simplemente haga
git diff HEAD
El crédito por lo siguiente va al usuario Cerran .
Y si siempre omite el área de preparación -acuando se compromete, simplemente puede usargit diff .
Resumen
git diff muestra cambios no organizados.git diff --cached muestra cambios por etapas.git diff HEAD muestra todos los cambios (tanto en escena como sin escena).Fuente: git-diff (1) Página del manual - Cerran
-acuando se compromete, simplemente puede usar git diff. <1> git diffmuestra unstaged cambios. <2> git diff --cachedmuestra los cambios por etapas . <3> git diff HEADmuestra todos los cambios (tanto en etapas como sin etapas). Fuente: Página del manual de git-diff (1)
Como se señaló en un comentario de amalloy , si por "versiones actual y última" te refieres a la última confirmación y la confirmación anterior, simplemente puedes usar
git show
git show HEAD~1para mostrar la confirmación de último pero uno, y git show HEAD~2etc. para las confirmaciones anteriores. Mostrar solo un archivo a través de git show HEAD~2 my_file.
Diferencia entre el último compromiso y el último compromiso (más el estado actual, si corresponde):
git diff HEAD~
o incluso (más fácil de escribir)
git diff @~
donde @es el sinónimo HEADde la rama actual y ~significa "dame el padre de la revisión mencionada".
git diff HEAD^(en lugar de la HEAD~forma equivalente ). Es un poco más fácil de recordar para un "viejo imbécil" como yo ;-)
~y @.
diff HEAD^ HEADdebería ser git diff @^!. Ver git-scm.com/docs/gitrevisions parar1^!
Solo use la cachedbandera si agregó, pero aún no se ha comprometido:
git diff --cached --color
En primer lugar, use "git log " para enumerar los registros del repositorio.
Ahora, seleccione las dos ID de confirmación, correspondientes a las dos confirmaciones. Desea ver las diferencias ( ejemplo : la mayor cantidad de confirmaciones y algunas más antiguas (según sus expectativas de la versión actual y alguna versión anterior) ).
A continuación, use:
git diff <commit_id1> <commit_id2>
o
git difftool <commit_id1> <commit_id2>
Si HEAD señala la confirmación superior, puede hacer algo como esto:
commit1 -> HEAD
commit2 -> HEAD~1
commit3 -> HEAD~2
Diferencia entre la primera y la segunda confirmación:
git diff HEAD~1 HEAD
Diferencia entre el primer y el tercer compromiso:
git diff HEAD~2 HEAD
Diferencia entre segunda y tercera confirmación:
git diff HEAD~2 HEAD~1
Y así...
Yo uso Bitbucket con el Eclipse IDE con el Eclipse EGit complemento instalado.
Comparo un archivo de cualquier versión de su historial (como SVN ).
Menú Explorador de proyectos → Archivo → clic derecho → Equipo → Mostrar en el historial .
Esto traerá el historial de todos los cambios en ese archivo. Ahora Ctrlhaga clic y seleccione cualquiera de las dos versiones → "Comparar entre sí" .
Esto también funcionará para las etiquetas (elimine el 'uniq' a continuación y otras partes si necesita ver todos los cambios):
git diff v1.58 HEAD
Lo siguiente es lo mismo, y eso podría ser útil para la integración continua (CI) para microservicios en un repositorio monolítico:
git diff v1.58 HEAD --name-only | sort -u | awk 'BEGIN {FS="/"} {print $1}' | uniq
<Folder Name>
(Crédito: https://dzone.com/articles/build-test-and-deploy-apps-independently-from-a-mo )