git - tag - ¿Cómo enumerar las ramas que contienen un compromiso dado?
qué tipos de etiquetas existen en git (2)
Desde la página de manual de git-branch :
git branch --contains <commit>
Solo enumere las ramas que contienen la confirmación especificada (HEAD si no se especifica). Implica
--list
.
git branch -r --contains <commit>
También user3941992 las sucursales de seguimiento remoto (como se menciona en la answer user3941992 continuación) que son "sucursales locales que tienen una relación directa con una sucursal remota".
Vea también este artículo listo para git .
La etiqueta
--contains
descubrirá si un cierto compromiso se ha introducido todavía en su sucursal. Tal vez haya obtenido un SHA de confirmación de un parche que pensó que había aplicado, o simplemente desea verificar si la confirmación para su proyecto de código abierto favorito que reduce el uso de memoria en un 75% aún no ha finalizado.
$ git log -1 tests
commit d590f2ac0635ec0053c4a7377bd929943d475297
Author: Nick Quaranto <[email protected]>
Date: Wed Apr 1 20:38:59 2009 -0400
Green all around, finally.
$ git branch --contains d590f2
tests
* master
Nota: si la confirmación está en una rama de seguimiento remoto , agregue la opción -a
.
(como comenta MichielB below )
git branch -a --contains <commit>
MatrixFrog comenta que solo muestra qué ramas contienen ese compromiso exacto .
Si quieres saber qué ramas contienen un compromiso "equivalente" (es decir, qué ramas han elegido con más precisión), eso es git cherry
:
Debido a que
git cherry
compara el conjunto de cambios en lugar del ID de confirmación (sha1) , puede usargit cherry
para averiguar si una confirmación que realizó localmente se ha aplicado<upstream>
bajo una identificación de confirmación diferente.
Por ejemplo, esto sucederá si está alimentando los parches<upstream>
través de correo electrónico en lugar de empujar o tirar los compromisos directamente.
__*__*__*__*__> <upstream>
/
fork-point
/__+__+__-__+__+__-__+__> <head>
(En este caso, las confirmaciones marcadas con '' -
'' no se mostrarían con git cherry
, lo que significa que ya están presentes en <upstream>
).
¿Cómo puedo consultar git para averiguar qué ramas contienen un compromiso dado? Por lo general, gitk listará las ramas, a menos que sean demasiadas, en cuyo caso simplemente dice "muchas (38)" o algo así. Necesito saber la lista completa, o al menos si ciertas sucursales contienen el compromiso.
Puedes correr:
git log <SHA1>..HEAD --ancestry-path --merges
Desde el comentario de la última confirmación en la salida puede encontrar el nombre de la rama original
Ejemplo:
c---e---g--- feature
/ /
-a---b---d---f---h---j--- master
git log e..master --ancestry-path --merges
commit h
Merge: g f
Author: Eugen Konkov <>
Date: Sat Oct 1 00:54:18 2016 +0300
Merge branch ''feature'' into master