Quiero una diferencia de todos los cambios en una rama que aún no se fusionó para dominar.
Lo intenté:
git diff master
git diff branch..master
git diff branch...master
Sin embargo, en cada uno de estos casos, el diff contiene contenido en master que aún no se ha fusionado en mi rama.
¿Hay alguna manera de hacer una diferencia entre mi rama y el maestro que excluya los cambios en el maestro que aún no se han fusionado en mi rama?
git diff master..branch
. Puede acortarlogit diff master..
si está en la rama. Lar1..r2
sintaxis es la abreviatura^r1 r2
que significa "muéstrame todo lo que desciender2
y no es accesible desder1
".git help gitrevisions
tiene información sobre las diversas sintaxis que puede usar....
sintaxis degit diff
. Su comentario es incorrecto, @jszakmeister, porque los rangos de revisión como se describen engitrevisions
no tienen nada que vergit diff
. Diff compara dos puntos en la historia, no puede funcionar con un rango.git diff
funciona de manera diferente a los otros comandos ... un hecho que encuentro frustrante. :-(Respuestas:
La base de fusión es el punto de donde
branch
divergenmaster
.Git diff admite una sintaxis especial para esto:
No debe intercambiar los lados porque entonces obtendría la otra rama. Desea saber qué cambió
branch
ya que divergiómaster
, no al revés.Vagamente relacionados:
Tenga en cuenta que
..
y la...
sintaxis no tiene la misma semántica que en otras herramientas de Git. Difiere del significado especificado enman gitrevisions
.Citando
man git-diff
:fuente
$ git diff master...branch
produjefatal: ambiguous argument 'master...branch': unknown revision or path not in the working tree.
- se trata de un comando dependiente de la versión?branch
. Elegí seguir con el nombre que el OP había elegido en la pregunta. Si desea utilizar la rama actual, reemplácelabranch
conHEAD
.git diff master...
para evitar especificar la rama (se tomará la actual).devel
Funciona el comando original después de que hayas salido , @ChrisGuest? Probablemente, Git creó la rama para usted durante el pago, como una copia local de una rama remota (normalmenteorigin/devel
). Si ese fuera el caso,git diff origin/devel...bugfix/API-353-api-allows-database-access-when
habría funcionado incluso antes del pago.Esto es lo que funcionó para mí:
Esto muestra solo los cambios entre mi rama local seleccionada actualmente y la rama maestra remota, e ignora todos los cambios en mi rama local que provienen de confirmaciones de fusión.
fuente
git cherry origin/master
.master
puede haber cambiado un conjunto de confirmaciones debajo de usted.Como también señalaron John Szakmeister y VasiliNovikov, el comando más corto para obtener la diferencia completa desde la perspectiva del maestro en su rama es:
Esto usa su copia local de master.
Para comparar un archivo específico use:
Ejemplo de salida:
fuente