Quiero fusionar dos ramas que se han separado 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 aquellos archivos que son diferentes entre las dos ramas.
Sin crear una nueva herramienta, creo que esto es lo más cerca que puedes 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 me perdí ...
git
branch
git-branch
git-diff
johannix
fuente
fuente
Respuestas:
Para comparar la rama actual contra la
master
rama:Para comparar dos ramas cualquiera:
Siga leyendo
git diff
en la documentación oficial .fuente
git diff --name-status your_branch...master
genera los cambios que ocurrieron en el maestro desde que se creó your_branch a partir de élTratar
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 fusionarse de la otra manera:
fuente
config --global color.ui true
), puede omitir el --color. (Tengo lks - síndrome de teclado perezoso).git config --global color.ui true
, para ser completo.fatal: ambiguous argument 'master..branchName': unknown revision or path not in the working tree.
También tenga en cuenta que git tiene una ramificación barata y fácil. Si creo que una fusión podría ser problemática, creo una rama para la fusión. Entonces, si
master
tiene los cambios que deseo fusionar yba
mi rama necesita el código del maestro, podría hacer lo siguiente:El resultado final es que tuve que probar la fusión en una rama desechable antes de atornillarla. Si me enredo, puedo eliminar la
ba-merge
rama y comenzar de nuevo.fuente
master
mientras trabajabas en revisar el código y solucionar conflictos.Si alguien intenta generar un archivo diff a partir de dos ramas:
fuente
También hay un método basado en GUI.
Puedes usar gitk .
Correr:
Haga clic derecho en una confirmación de una rama y seleccione Marcar esta confirmación en el menú emergente.
Luego habrá una lista de archivos modificados en el panel inferior derecho y detalles de diferencias en el panel inferior izquierdo.
fuente
Una opción más, usando meld en este caso:
Esto permite no solo 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.
fuente
-d
opción?Tenga en cuenta que git hace que sea fácil probar la fusión y alejarse de cualquier problema si no le gusta el resultado. Puede ser más fácil que buscar posibles problemas de antemano.
fuente
Y si está buscando cambios solo entre ciertos archivos, entonces:
branch1 es opcional y su rama actual (la rama en la que se encuentra) se considerará de forma predeterminada si no se proporciona branch1. p.ej:
fuente
Cuando se trabaja en colaboración, o en múltiples funciones a la vez, es común que el upstream o incluso su master contengan trabajo que no está incluido en su rama, y que aparecerá incorrectamente en las diferencias básicas.
Si su Upstream puede haberse movido, debe hacer esto:
El simple uso de git diff master puede incluir, o no incluir, cambios relevantes.
fuente
Si está utilizando IntelliJ IDEA , también puede comparar cualquier rama con su rama de trabajo actual. Consulte http://www.jetbrains.com/idea/webhelp/merging-deleting-and-comparing-branches.html#d288093e3827 para obtener más información. Esto también está disponible en la edición gratuita .
fuente
Hay dos ramas, digamos
Estando en la rama A puedes escribir
entonces esto te dará una salida de
El punto importante sobre esto es
El texto en verde está presente en el interior de la rama A
El texto en rojo está presente en la Rama B
fuente
Aquí hay muchas respuestas, pero quería agregar algo que uso habitualmente. SI está en una de las ramas que le gustaría comparar, normalmente hago una de las siguientes. En aras de esta respuesta, diremos que estamos en nuestra rama secundaria. Dependiendo de qué vista necesites en ese momento dependerá de cuál elijas, 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 secundaria) y el código original serán las líneas agregadas y el nuevo código se considerará las líneas eliminadas
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á las líneas nuevas.
fuente
Si está utilizando Github / Github Enterprise, puede usar la interfaz de usuario web presionando la url
/compare
de la ruta de su repositorio, por ejemplo, https://github.com/http4s/http4s/compare . Puede seleccionar la rama / commit / etiqueta que desea comparar:Y el diff se presentará en la interfaz de github en la url
/compare/{x1}...{x2}
donde estánx2
yx1
están la rama / commit / etiqueta que desea comparar, por ejemplo: https://github.com/http4s/http4s/compare/release-0.18.x ...MaestroPuedes ver más en el Github Doc .
fuente
Para las personas que buscan una solución GUI, Git Cola tiene un muy agradable "Visor de diferencias de sucursal ( Diff -> Sucursales ... ).
fuente
si
revision_n
yrevision_m
son confirmaciones sucesivas, entonces sale igual quegit show revision_m
fuente
También puede usar una diferencia visual .
Por ejemplo, si está utilizando Sourcetree , simplemente puede seleccionar dos confirmaciones en la vista de registro .
(Personalmente prefiero usar una GUI en la mayoría de los casos para esto, y estoy publicando esto para aquellos que no estén familiarizados con las opciones de GUI).
fuente
Si te gusta la GUI y estás usando Windows, aquí hay una manera fácil.
fuente
También puede comparar fácilmente ramas para archivos modificados utilizando, por ejemplo, TortoiseGit . Simplemente haga clic en Examinar referencias y elija las ramas que desea comparar.
Por ejemplo, si compara su rama con master , obtendrá como resultado una lista de archivos que se cambiarán en master si decide fusionar su rama en master .
Recuerde que tendrá un resultado diferente si compara master con your-branch y your-branch con master .
fuente