Mostrar qué archivos han cambiado entre dos revisiones
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 (movido a web.archive.org) que fue bastante útil.
Las herramientas para comparar sucursales 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 estar de 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í...
Para comparar la rama actual con main
la rama:
$ git diff --name-status main
Para comparar dos ramas cualesquiera:
$ git diff --name-status firstbranch..yourBranchName
Hay más opciones en git diff
la documentación oficial (y específicamente --name-status
la opción).
Intentar
$ git diff --stat --color master..branchName
Esto le brindará más información sobre cada cambio, sin dejar de utilizar la misma cantidad de líneas.
También puedes voltear las ramas para obtener una imagen aún más clara de la diferencia si las fusionaras al revés:
$ git diff --stat --color branchName..master
También tenga en cuenta que git tiene ramificaciones fáciles y económicas. Si creo que una fusión podría ser problemática, creo una rama para la fusión. Entonces, si master
tengo los cambios que quiero fusionar y ba
es mi rama la que 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 pude probar la combinación en una rama desechable antes de arruinar mi rama. Si me enredo, puedo eliminar la ba-merge
rama y empezar de nuevo.