¿Cómo ejecuto git log para ver los cambios solo para una rama específica?

396

Tengo una sucursal local que rastrea la sucursal remota / maestra. Después de ejecutar git-pully git-log, el registro mostrará todas las confirmaciones en la rama de seguimiento remoto, así como en la rama actual. Sin embargo, debido a que se realizaron tantos cambios en la sucursal remota, necesito ver solo las confirmaciones realizadas en la sucursal local actual.

¿Cuál sería el comando Git para usar solo para mostrar confirmaciones para una rama específica?

Notas:

Información de configuración:

[branch "my-branch"]
  remote = origin
  merge = refs/heads/master
Carretera de la vida
fuente

Respuestas:

527

Suponiendo que su rama se creó fuera de master, entonces mientras está en la rama (es decir, tiene la rama desprotegida):

git cherry -v master

o

git log master..

Si no está en la rama, puede agregar el nombre de la rama al comando "git log", de esta manera:

git log master..branchname

Si su rama fue hecha de origin/master, diga en origin/masterlugar de master.

Wayne Conrad
fuente
100
¡Perfecto! git log --no-merges master..Era exactamente lo que necesitaba.
Highway of Life
3
@HighwayofLife: --no-mergespuede parecer que solo muestra confirmaciones de una rama específica, pero en realidad solo muestra confirmaciones que no resultaron en una fusión
rynmrtn
55
¿Qué tal una forma de hacer esto que no requiera que escriba / conozca la rama principal? :)
ELLIOTTCABLE
1
Para tener una idea de la tasa de cambio, utilicé el siguiente encantamiento :) que produce un formato de registro de una línea con el nombre del autor mostrado primero, seguido de la edad relativa de la confirmación:git log --no-merges --pretty='%C(yellow)%h%d %Creset%an %Cgreen%ar:%Creset %s' --graph master..
Noah Sussman
2
no deberia leer? git log master .. <your branch> --oneline --no-merges
Alex Nolasco
104

Utilizar:

git log --graph --abbrev-commit --decorate  --first-parent <branch_name>

Es solo para la rama de destino (por supuesto --graph, --abbrev-commit --decorate son más pulidos).

La opción clave es --first-parent: "Siga solo la primera confirmación principal al ver una confirmación de fusión" ( https://git-scm.com/docs/git-log )

Impide que se muestren los tenedores de confirmación.

yerlilbilgin
fuente
25
--first-parent <branch_name>Es la opción. trabajos !
parasire el
3
¿Dónde está el nombre de la rama, la rama cuya historia solo quiero ver? En una rama con solo 3 cambios, esto me muestra cientos.
Ed Randall
1
--first-parent <branch_name>También funcionó para mí! Terminé con un alias para git log --first-parent $current_branch_name --no-merges. En respuesta a @EdRandall, mostrará las confirmaciones en la rama + aquellas de donde se bifurcó. Por ejemplo:
rachel
2
Vaya, lo presenté pronto, aquí está el ejemplo: tienes commits A y B en master. Te ramificas new_featuredel maestro. Agrega commits C y D a él. Luego agregas E y F para dominar. Luego fusionas maestro a new_feature. El uso git logde new_feature, verá "maestro de combinación", F, E, D, C, A, B, usando git log --first-parent new_feature --no-merges, verá D, C, A, B.
rachel
24

Si solo desea las confirmaciones que realiza en una rama en particular, use el siguiente comando.

git log branch_name --author='Dyaniyal'
Dyaniyal Wilson
fuente
13

El problema que estaba teniendo, que creo que es similar a esto, es que el maestro estaba muy por delante de mi punto de ramificación para que la historia sea útil. (Navegar hasta el punto de ramificación llevaría demasiado tiempo).

Después de algunas pruebas y errores, esto me dio aproximadamente lo que quería:

git log --graph --decorate --oneline --all ^master^!
GPHemsley
fuente
0

solo corre git log origin/$BRANCH_NAME

Mahdi Pedram
fuente