¿Cómo puedo consultar git para averiguar qué ramas contienen una confirmación dada? gitk
generalmente enumerará las ramas, a menos que haya demasiadas, en cuyo caso solo dice "muchas (38)" o algo así. Necesito saber la lista completa, o al menos si ciertas ramas contienen el commit.
git
version-control
Andrew Arnott
fuente
fuente
Respuestas:
Desde la página de manual de git-branch :
Enumera también las ramas de seguimiento remoto (como se menciona en la respuesta del usuario 3941992 a continuación) que son "ramas locales que tienen una relación directa con una rama remota".
Vea también este artículo de git ready .
Nota: si el commit está en una rama de seguimiento remota , agregue la
-a
opción .(como comenta MichielB a continuación )
MatrixFrog comenta que solo muestra qué ramas contienen esa confirmación exacta .
Si desea saber qué ramas contienen una confirmación "equivalente" (es decir, qué ramas han seleccionado esa confirmación) eso es
git cherry
:(Aquí, los commits marcados como '
-
' no apareceríangit cherry
, lo que significa que ya están presentes<upstream>
).fuente
tests
ymaster
-master
es la rama actual, por lo tanto, el asterisco.git cherry
: "Debido a que git cherry compara el conjunto de cambios en lugar de la identificación 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 parches <upstream> por correo electrónico en lugar de enviar o extraer confirmaciones directamente ". kernel.org/pub/software/scm/git/docs/git-cherry.html-a
parámetro para verificar también las ramas remotas.git tag --contains <commit>
. Consulte ¿ Buscar todas las etiquetas que contienen una confirmación? .git cherry
parte @UpAndAdam hizo la pregunta aquí: stackoverflow.com/questions/16304574/… , por desgracia, la pregunta (todavía) no ha sido respondida.Puedes ejecutar:
En el comentario de la última confirmación en la salida, puede encontrar el nombre de la sucursal original
Ejemplo:
fuente
git log <SHA1>..master --ancestry-path --merges --oneline | tail -n1
poner esto en una líneagit log <SHA1>..master --ancestry-path --merges --oneline -1
A..B
rango de commit, simplemente no use un rango como este ::git log HEAD --oneline -1
>82c12a9 (HEAD, origin/remote-branch-name, origin/master, origin/dev, origin/HEAD, master, dev) commit message
.master
siempre es preferible si está en esta lista . A partir de ahí está menos claro. Se podría tratar de leer git branch de archivo .gitmodules:git config -f .gitmodules submodule.src/foo/submodule.branch
. Esto podría ser un tenedor / pr de larga data. Puede cd para repo root y ejecutargit config submodule.src/foo/submodule.branch
. También puedes usar la rama git actual de superproyectos.git config submodule.src/foo/submodule.branch
puede verse influenciado por cualquier variedad de configuraciones de git, incluido un archivo .gitconfig repo-local. (requiere corrergit config --local include.path ./path/to/your/.gitconfig
)