ver pendientes modificados log ignorar commits comandos cambios archivos archivo git branch git-branch git-diff

git - pendientes - Mostrando qué archivos han cambiado entre dos revisiones



ver cambios en un archivo git (14)

Quiero fusionar dos ramas que han estado separadas por un tiempo y quería saber qué archivos se han modificado.

Encontré este enlace: http://linux.yyz.us/git-howto.html que fue bastante útil.

Las herramientas para comparar ramas que he encontrado son:

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

Me preguntaba 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 cerca que puede llegar a hacerlo ahora (que por supuesto mostrará repeticiones si un archivo se modificó más de una vez):

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

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


Cuando se trabaja en colaboración, o en varias funciones a la vez, es común que el upstream o incluso su maestro contenga trabajos que no estén incluidos en su rama, y ​​aparezcan incorrectamente en diferencias básicas.

Si su Upstream puede haberse movido, debe hacer esto:

git fetch git diff origin/master...

El solo uso de git diff master puede incluir, o no incluir, cambios relevantes.


Hay dos ramas, digamos

  • A (Rama en la que estás trabajando)
  • B (Otra rama con la que quieres comparar)

Estando en la rama A puedes teclear

git diff --color B

entonces esto te dará una salida de

El punto importante sobre esto es

  1. El texto en verde está dentro presente en la rama A

  2. El texto en rojo está presente en la rama B


Hay muchas respuestas aquí, pero quería agregar algo que uso comúnmente. SI está en una de las sucursales que le gustaría comparar, normalmente hago una de las siguientes. Por el bien de esta respuesta diremos que estamos en nuestra rama secundaria. Dependiendo de la vista que necesite en el momento dependerá de la que elija, pero la mayoría de las veces estoy usando la segunda opción de las dos. La primera opción puede ser útil si está intentando volver a una copia original. ¡De cualquier manera, ambos hacen el trabajo!

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

git diff ..master

O

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

git diff master..


Para comparar la rama actual contra el master

$ git diff --name-status master

Para comparar cualquier par de ramas.

$ git diff --name-status firstbranch..yourBranchName

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


Si alguien está intentando generar un archivo diff desde dos ramas:

git diff master..otherbranch > myDiffFile.diff



Si te gusta la GUI y estás usando Windows, aquí hay una manera fácil.

  1. Descargar WinMerge
  2. Echa un vistazo a las dos ramas en diferentes carpetas
  3. Haga una carpeta por carpeta de comparación utilizando WinMerge. También puede hacer modificaciones fácilmente si una de las sucursales es la que está trabajando.

También hay un método basado en GUI.

Puedes usar gitk .

  1. Correr:

    $ gitk --all

  2. Haga clic con el botón derecho en la confirmación de una rama y seleccione Marcar esta confirmación en el menú emergente.

  3. Haga clic con el botón derecho en una confirmación de otra rama y seleccione Diff this -> commit commit o Diff marcado commit -> this .

Luego habrá una lista de archivos modificada en el panel inferior derecho y detalles de diferencias en el panel inferior izquierdo.


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

Por ejemplo, si compara su rama con el maestro , obtendrá como resultado 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 maestro con su rama y su rama con maestro .


También tenga en cuenta que git tiene ramificaciones baratas y fáciles. Si creo que una combinación podría ser problemática, creo una rama para la combinación. Entonces, si el master tiene los cambios en los que quiero fusionar y si mi rama necesita el código del maestro, podría 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 tengo que probar la fusión en una rama desechable antes de atornillar con mi rama. Si me enredo solo puedo eliminar la rama ba-merge y comenzar de nuevo.


Tenga en cuenta que git hace que sea más fácil probar la combinación y evitar cualquier problema si no le gusta el resultado. Podría ser más fácil que buscar problemas potenciales de antemano.


Tratar

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

Esto le dará más información sobre cada cambio, mientras sigue usando el mismo número de líneas.

También puede voltear las ramas para obtener una imagen aún más clara de la diferencia si tuviera que fusionar de la otra manera:

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


Una opción más, usando meld en este caso:

git difftool -d master otherbranch

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


Y si está buscando cambios solo entre 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. p.ej:

git diff master -- controller/index.js