¿Cómo puedo diferenciar un archivo, por ejemplo pom.xml
, de la rama maestra a una versión anterior arbitraria en Git?
324
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>:foo/ HEAD:foo/
.Por ejemplo:
fuente
git diff <revision> root/path/file
.Si desea ver la diferencia entre la última confirmación de un solo archivo, puede hacer lo siguiente:
Esto le dará la diferencia del archivo en git, no está comparando su archivo local.
fuente
-1
paso a paso hasta que obtenga los cambios.gitlog () { git log -${3:-p} -${2:-1} $1; }
usa como:gitlog Rakefile
ogitlog Rakefile 5
ygitlog 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:
Puede cambiar el número (~ 1) a la enésima confirmación con la que desea diferir.
fuente
HEAD~1
se sustituye por<revision>
, lo que hace que esta respuesta sea un duplicado.Sintaxis Genérica:
para todos los archivos llamados "FileName.xml" en cualquier parte de su repositorio.
Observe el espacio entre "-" y "**"
Responda a su pregunta:
como siempre con git, puede usar una etiqueta / sha1 / "HEAD ^" para identificar una confirmación.
Probado con git 1.9.1 en Ubuntu.
fuente
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:
Se convertiría
Más sobre la expansión de Brace con bash.
fuente
Para comparar a 5 commit con el actual, ambos en adelante
master
, simplemente haga: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:fuente
git diff -w HEAD origin / master path / to / file
fuente
Funciona si no estás en la rama maestra también.
fuente
Si está bien con una herramienta gráfica (o incluso la prefiere) puede:
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.
fuente
Para las personas interesadas en hacer lo mismo desde GitHub, vea comparar confirmaciones a lo largo del tiempo .
fuente
Si necesita diferenciar en un solo archivo en un escondite, por ejemplo, puede hacer
fuente
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:
Por ejemplo:
https://github.com/grails/grails-core/commit/02942c5b4d832b856fbc04c186f1d02416895a7e/grails-test-suite-uber/build.gradle
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.
fuente