comparar archivos git git-diff

comparar archivos git



¿Cómo comparar archivos de dos ramas diferentes? (8)

De acuerdo con la respuesta sugerida por @dahlbyk. Si desea que el archivo diff se escriba en un archivo de diferencias para las revisiones de código, use el siguiente comando.

git diff branch master -- filepath/filename.extension > filename.diff --cached

Tengo un script que funciona bien en una rama y está roto en otra. Quiero ver las dos versiones una al lado de la otra y ver qué es diferente. ¿Hay alguna manera de hacer esto?

Para que quede claro, no estoy buscando una herramienta de comparación (uso Beyond Compare). Estoy buscando un comando git diff que me permita comparar la versión maestra con la versión actual de mi rama para ver qué ha cambiado. No estoy en medio de una fusión ni nada. Solo quiero decir algo como

git diff mybranch/myfile.cs master/myfile.cs


Hay muchas maneras de comparar archivos de dos ramas diferentes:

  • Opción 1: si desea comparar el archivo de una rama específica a otra rama específica:

    git diff branch1name branch2name path/to/file

    Ejemplo:

    git diff mybranch/myfile.cs mysecondbranch/myfile.cs

    En este ejemplo, está comparando el archivo en la rama "mybranch" al archivo en la rama "mysecondbranch".

  • Opción 2: Manera simple:

    git diff branch1:file branch2:file

    Ejemplo:

    git diff mybranch:myfile.cs mysecondbranch:myfile.cs

    Este ejemplo es similar a la opción 1.

  • Opción 3: si desea comparar su directorio de trabajo actual con alguna rama:

    git diff ..someBranch path/to/file

    Ejemplo:

    git diff ..master myfile.cs

    En este ejemplo, está comparando el archivo de su rama real al archivo en la rama maestra.


La mejor manera de hacerlo es usando git diff de la siguiente manera: git diff <source_branch> <target_branch> -- file_path

Se comprobará la diferencia entre los archivos en esas ramas. Echa un vistazo a este artículo para obtener más información sobre los comandos git y cómo funcionan.


Para poder comparar dos archivos en el git bash necesitas usar el comando:

git diff <Branch name>..master -- Filename.extension

Este comando mostrará la diferencia entre los dos archivos en el mismo bash.



Simplemente hago git diff branch1 branch2 path/to/file

Esto comprueba las diferencias entre los archivos. Los cambios en branch1 estarían en rojo. Los cambios en branch2 estarían en verde.

Se supone que branch1 es el pasado y branch2 es el futuro. Puede revertir esto invirtiendo el orden de las ramas en el diff: git diff branch2 branch1


Sintaxis más moderna:

git diff ..master path/to/file

El prefijo de doble punto significa "del directorio de trabajo actual a". También puede decir:

  • master.. , es decir, lo contrario de lo anterior. Esto es lo mismo que master .
  • mybranch..master , que hace referencia explícita a un estado distinto del árbol de trabajo actual.
  • v2.0.1..master , es decir, hacer referencia a una etiqueta.
  • [refspec]..[refspec] , básicamente cualquier cosa identificable como un estado de código para git.

git diff puede mostrarte la diferencia entre dos confirmaciones:

git diff mybranch master -- myfile.cs

O equivalente:

git diff mybranch..master -- myfile.cs

Usando la última sintaxis, si cualquiera de las partes es HEAD se puede omitir (por ejemplo, master.. compara master con HEAD ).

También te puede interesar mybranch...master (de git diff docs ):

Esta forma es para ver los cambios en la rama que contiene y hasta el segundo <commit> , comenzando en un antepasado común de ambos <commit> . git diff A...B es equivalente a git diff $(git-merge-base AB) B

En otras palabras, esto dará una diferencia de cambios en el master ya que divergió de mybranch (pero sin cambios nuevos desde entonces en mybranch ).

En todos los casos, el separador -- antes del nombre del archivo indica los indicadores de fin de línea de comando. Esto es opcional, a menos que Git se confunda si el argumento se refiere a una confirmación o un archivo, pero incluirlo no es un mal hábito. Consulte https://.com/a/13321491/54249 para ver algunos ejemplos.

Se pueden pasar los mismos argumentos a git difftool si tiene uno configurado.