tipos tag remove qué practices existen etiquetas crear best git version-control

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 usar git 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