Muestra qué archivos han cambiado entre las dos versiones.

Quiero fusionar dos ramas, que se dividieron por un tiempo y quería saber qué archivos se cambiaron.

Siguió este enlace: http://linux.yyz.us/git-howto.html , que fue muy útil.

Las herramientas para comparar las ramas que encontré son las siguientes:

  • git diff master..branch
  • git log master..branch
  • git shortlog master..branch

Me pregunto si hay algo como "git status master..branch" para ver solo los archivos que son diferentes entre las dos ramas.

Sin crear una nueva herramienta, creo que esto es lo más cercano que puedes hacer ahora (que, por supuesto, mostrará repeticiones si el archivo se ha cambiado más de una vez):

  • git diff master..branch | grep "^diff"

Me pregunto si hay algo que extrañe ...

1645
05 мая '09 в 3:47 2009-05-05 03:47 johannix preguntó el 5 de mayo de 2009 a las 3:47 de 2009-05-05 03:47
@ 14 respuestas

Probar

 $ git diff --name-status master..branchName 

Esto debería hacer lo que necesites, si te entiendo correctamente.

2010
05 мая '09 в 4:04 2009-05-05 04:04 Responder a JasonSmith el 5 de mayo de 2009 a las 4:04 del 2009-05-05 04:04

Probar

 $ git diff --stat --color master..branchName 

Esto le dará más información sobre cada cambio, mientras que al mismo tiempo utilice el mismo número de líneas.

border=0

También puedes voltear las ramas para tener una idea aún más clara de la diferencia si tuvieras que fusionar de otra manera:

 $ git diff --stat --color branchName..master 
335
09 февр. Respuesta es dada por Gerry el 09 de febrero. 2011-02-09 22:38 '11 a las 10:38 pm 2011-02-09 22:38

También tenga en cuenta que git tiene un tenedor barato y fácil. Si creo que una combinación puede ser problemática, creo una rama de combinación. Por lo tanto, si el master tiene cambios que quiero fusionar, y ba es mi rama, que necesita código del asistente, puedo hacer lo siguiente:

 git checkout ba git checkout -b ba-merge git merge master .... review new code and fix conflicts.... git commit git checkout ba git merge ba-merge git branch -d ba-merge git merge master 

El resultado final es que necesito probar una combinación en la rama desplegable antes de atornillar mi rama. Si me reúno por mi cuenta, simplemente puedo eliminar la rama ba-merge y comenzar de nuevo.

136
11 окт. Respuesta dada por Eric Anderson el 11 de octubre. 2012-10-11 04:22 '12 a las 4:22 2012-10-11 04:22

Si alguien intenta crear un archivo diff desde dos ramas:

 git diff master..otherbranch > myDiffFile.diff 
36
03 апр. Respuesta dada por Paulino III 03 abr. 2013-04-03 17:01 '13 a las 17:01 2013-04-03 17:01

También hay un método basado en una interfaz gráfica.

Puedes usar gitk .

  • Ejecutar:

     $ gitk --all 
  • Haga clic con el botón derecho en una confirmación de rama y seleccione Marcar esta confirmación en el menú emergente.

  • Haga clic con el botón derecho en la fijación de otra rama y seleccione Diff this → marcado latch o Diff marcado commit → this.

Luego aparecerá una lista de archivos modificados en el panel inferior derecho y la información se mostrará en el panel inferior izquierdo.

28
14 июня '13 в 9:01 2013-06-14 09:01 Yantao Xie da la respuesta el 14 de junio de 2013 a las 9:01 2013-06-14 09:01

Tenga en cuenta que git le permite simplemente intentar fusionarse y regresar de cualquier problema si no le gusta el resultado. Esto puede ser más fácil que encontrar problemas potenciales por adelantado.

28
05 мая '09 в 3:59 2009-05-05 03:59 respondió a David Plumpton el 5 de mayo de 2009 a las 3:59 de 2009-05-05 03:59

Otra opción que usa meld en este caso es:

 git difftool -d master otherbranch 

Esto no solo le permite ver las diferencias entre los archivos, sino que también proporciona una manera fácil de señalar y hacer clic en un archivo específico.

24
24 апр. La respuesta se da rsilva4 24 abr. 2014-04-24 16:23 '14 a las 16:23 2014-04-24 16:23

Cuando trabajan juntos o usan varias funciones al mismo tiempo, generalmente sucede que el asistente ascendente o incluso su asistente contiene trabajo que no está incluido en su rama y se mostrará incorrectamente en las diferencias básicas.

Si tu Upstream puede haberse movido, debes hacer esto:

 git fetch git diff origin/master... 

Simplemente usando git, el asistente de diff puede o no incluir los cambios apropiados.

11
24 марта '15 в 6:21 2015-03-24 06:21 La respuesta la da Alex Brown el 24 de marzo de 2015 a las 6:21 2015-03-24 06:21

Si usa IntelliJ IDEA , también puede comparar cualquier rama con su rama de trabajo actual. Para obtener más información, consulte http://www.jetbrains.com/idea/webhelp/merging-deleting-and-comparing-branches.html#d288093e3827 . Esto está disponible en la versión gratuita .

7
06 июня '13 в 10:17 2013-06-06 10:17 Wim Deblauwe dio la respuesta el 6 de junio de 2013 a las 10:17 2013-06-06 10:17

Y si está buscando cambios solo para ciertos archivos, entonces:

 git diff branch1 branch2 -- myfile1.js myfile2.js 

Branch1 es opcional, y su sucursal actual (la sucursal en la que se encuentra) se considerará de forma predeterminada si no se proporciona branch1. por ejemplo:

 git diff master -- controller/index.js 
7
16 мая '16 в 16:13 2016-05-16 16:13 La respuesta es dada por Mannu el 16 de mayo de 2016 a las 16:13 2016-05-16 16:13

Solo agregue información adicional a la respuesta de JasonSmith :

Revisé mi hilo con este comando:

$ git clone -b branchName http://repository_url

Sin embargo, el git diff propuesto no funcionó:

 $ git diff --name-status master..branchName fatal: ambiguous argument 'master..branchName': unknown revision or path not in the working tree. Use '--' to separate paths from revisions, like this: 'git <command> [<revision>...] -- [<file>...]' 

Investigué las ramas siguiendo esta rama :

 $ git branch * branchName $ git branch -a * branchName remotes/origin/HEAD -> origin/master remotes/origin/master remotes/origin/branchName 

No tenía una rama master localmente, así que la remotes/origin/master con remotes/origin/master :

 $ git diff --name-status remotes/origin/master..push . . . . . . . . . 

remotes/origin/master más sobre los remotes/origin/master en este hilo .

2
02 июня '16 в 16:40 2016-06-02 16:40 la respuesta se da solo un chico al azar 02 junio '16 a las 16:40 2016-06-02 16:40

Hay muchas respuestas aquí, pero quería agregar algo que normalmente uso. Si está en una de las ramas que le gustaría comparar, normalmente hago una de las siguientes. Por el bien de esta respuesta, decimos que estamos en nuestra industria secundaria. Dependiendo de qué tipo necesita en ese momento, dependerá de lo que elija, pero la mayoría de las veces uso la segunda versión de estas dos. La primera opción puede ser útil si intenta volver a la copia original; en cualquier caso, ¡ambas se ejecutan!

Esto comparará el asistente con la rama en la que estamos (que es secundario), y el código fuente serán las líneas agregadas, y el nuevo código se considerará como líneas eliminadas.

 git diff ..master 

O

Esto también comparará el asistente con la rama en la que estamos (que es secundario), y el código fuente serán las líneas antiguas, y el nuevo código serán las líneas nuevas.

 git diff master.. 
1
01 июня '17 в 1:00 2017-06-01 01:00 la respuesta se da Jase 01 junio '17 a la 1:00 2017-06-01 01:00

Hay dos ramas:

  • A (la rama en la que trabajas)
  • B (Otro hilo que quieres comparar)

Mientras que en la rama A, puede ingresar

 git diff --color B 

entonces te dará el resultado

2019

04 окт. la respuesta es dada por selftaught91 04 oct. 2016-10-04 14:56 '16 a las 2:56 pm 2016-10-04 14:56

También puede comparar fácilmente sucursales para archivos modificados utilizando, por ejemplo, TortoiseGit . Simplemente haga clic en Examinar enlaces y seleccione las ramas que desea comparar.

Por ejemplo, si compara su sucursal con un maestro, recibirá una lista de archivos que se cambiarán en el maestro, si decide fusionar su rama en el maestro.

Recuerde que tendrá un resultado diferente si compara el maestro con su rama y su rama con el maestro.

-1
18 окт. La respuesta fue dada por Piotr el 18 de octubre. 2017-10-18 12:53 '17 a las 12:53 2017-10-18 12:53

Otras preguntas sobre o haga una pregunta