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..r2sintaxis es la abreviatura^r1 r2que significa "muéstrame todo lo que desciender2y no es accesible desder1".git help gitrevisionstiene 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 engitrevisionsno tienen nada que vergit diff. Diff compara dos puntos en la historia, no puede funcionar con un rango.git difffunciona de manera diferente a los otros comandos ... un hecho que encuentro frustrante. :-(Respuestas:
La base de fusión es el punto de donde
branchdivergenmaster.Git diff admite una sintaxis especial para esto:
No debe intercambiar los lados porque entonces obtendría la otra rama. Desea saber qué cambió
branchya 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...branchprodujefatal: 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ácelabranchconHEAD.git diff master...para evitar especificar la rama (se tomará la actual).develFunciona 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-whenhabrí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.masterpuede 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