Respuestas:
Tu puedes hacer:
git diff master~20:pom.xml pom.xml
... para comparar su actual pom.xml
con la de hace master
20 revisiones hasta el primer padre. Puede reemplazar master~20
, por supuesto, con el nombre del objeto (SHA1sum) de una confirmación o cualquiera de las muchas otras formas de especificar una revisión .
Tenga en cuenta que esto realmente compara la pom.xml
versión anterior con la versión en su árbol de trabajo, no la versión confirmada master
. Si lo desea, puede hacer lo siguiente en su lugar:
git diff master~20:pom.xml master:pom.xml
git diff <revision> <path>
Por ejemplo:
git diff b0d14a4 foobar.txt
git diff <revision> root/path/file
.
Si desea ver la diferencia entre la última confirmación de un solo archivo, puede hacer lo siguiente:
git log -p -1 filename
Esto le dará la diferencia del archivo en git, no está comparando su archivo local.
-1
paso a paso hasta que obtenga los cambios.
gitlog () { git log -${3:-p} -${2:-1} $1; }
usa como: gitlog Rakefile
o gitlog Rakefile 5
y gitlog Rakefile 10 s
. El primero muestra una diferencia; el segundo muestra cinco diferencias; el tercero muestra diez --no-patch
.
Para ver qué se modificó en un archivo en la última confirmación:
git diff HEAD~1 path/to/file.
Puede cambiar el número (~ 1) a la enésima confirmación con la que desea diferir.
HEAD~1
se sustituye por <revision>
, lo que hace que esta respuesta sea un duplicado.
Sintaxis Genérica:
$git diff oldCommit..newCommit -- **FileName.xml > ~/diff.txt
para todos los archivos llamados "FileName.xml" en cualquier parte de su repositorio.
Observe el espacio entre "-" y "**"
Responda a su pregunta:
$git checkout master
$git diff oldCommit..HEAD -- **pom.xml
or
$git diff oldCommit..HEAD -- relative/path/to/pom.xml
como siempre con git, puede usar una etiqueta / sha1 / "HEAD ^" para identificar una confirmación.
Probado con git 1.9.1 en Ubuntu.
Si ninguno de los commit es su HEAD, entonces la expansión de llaves de bash resulta realmente útil, especialmente si sus nombres de archivo son largos, el ejemplo anterior:
git diff master~20:pom.xml master:pom.xml
Se convertiría
git diff {master~20,master}:pom.xml
Más sobre la expansión de Brace con bash.
Para comparar a 5 commit con el actual, ambos en adelante master
, simplemente haga:
git diff master~5:pom.xml master:pom.xml
También puede referirse al número hash de confirmación, por ejemplo, si el número hash es x110bd64
, puede hacer algo como esto para ver la diferencia:
git diff x110bd64 pom.xml
git diff -w HEAD origin / master path / to / file
git diff master~20 -- pom.xml
Funciona si no estás en la rama maestra también.
Si está bien con una herramienta gráfica (o incluso la prefiere) puede:
gitk pom.xml
En gitk puede hacer clic en cualquier confirmación (para "seleccionarla") y hacer clic con el botón derecho en cualquier otra confirmación para seleccionar "Diferenciar esto -> seleccionado" o "Diferenciar seleccionado -> esto" en el menú emergente, según el orden que prefiera.
Para las personas interesadas en hacer lo mismo desde GitHub, vea comparar confirmaciones a lo largo del tiempo .
Si necesita diferenciar en un solo archivo en un escondite, por ejemplo, puede hacer
git diff stash@{0} -- path/to/file
Si está buscando el diff en un commit específico y desea usar la interfaz de usuario de github en lugar de la línea de comando (digamos que desea vincularlo con otras personas), puede hacer lo siguiente:
https://github.com/<org>/<repo>/commit/<commit-sha>/<path-to-file>
Por ejemplo:
Tenga en cuenta los enlaces Anterior y Siguiente en la parte superior derecha que le permiten navegar a través de todos los archivos en la confirmación.
Sin embargo, esto solo funciona para una confirmación específica, no para comparar entre dos versiones arbitrarias.
git diff <revision>:foo/ HEAD:foo/
.