Comment puis-je interroger git pour savoir quelles branches contiennent un commit donné? gitk
listera généralement les branches, sauf s'il y en a trop, auquel cas il dit simplement "beaucoup (38)" ou quelque chose comme ça. J'ai besoin de connaître la liste complète, ou du moins si certaines branches contiennent le commit.
git
version-control
Andrew Arnott
la source
la source
Réponses:
Depuis la page de manuel de git-branch :
Répertorie également les branches de suivi à distance (comme mentionné dans la réponse de user3941992 ci-dessous) qui sont des "branches locales qui ont une relation directe avec une branche distante".
Voir aussi cet article prêt pour git .
Remarque: si la validation se trouve sur une branche de suivi à distance , ajoutez l'
-a
option .(comme MichielB commente ci-dessous )
MatrixFrog fait remarquer qu'elle ne montre que les branches qui contiennent cet engagement exact .
Si vous voulez savoir quelles branches contiennent un commit "équivalent" (c'est-à-dire quelles branches ont choisi ce commit)
git cherry
:(Ici, les commits marqués '
-
' n'apparaissent pasgit cherry
, ce qui signifie qu'ils sont déjà présents dans<upstream>
.)la source
tests
etmaster
-master
est la branche actuelle, donc l'astérisque.git cherry
: "Parce que git cherry compare le changeset plutôt que l'id de commit (sha1), vous pouvez utiliser git cherry pour le découvrir si une validation que vous avez effectuée localement a été appliquée <en amont> sous un ID de validation différent. Par exemple, cela se produira si vous alimentez les correctifs <en amont> par e-mail plutôt que de pousser ou de tirer directement les validations. " kernel.org/pub/software/scm/git/docs/git-cherry.html-a
paramètre pour vérifier également les branches distantes.git tag --contains <commit>
. Voir Recherche de toutes les balises contenant un commit? .git cherry
partie @UpAndAdam a posé la question ici: stackoverflow.com/questions/16304574/… , hélas, la question n'a pas (encore) répondu.Vous pouvez exécuter:
À partir du commentaire du dernier commit dans la sortie, vous pouvez trouver le nom de la branche d'origine
Exemple:
la source
git log <SHA1>..master --ancestry-path --merges --oneline | tail -n1
d'obtenir cela en une seule lignegit log <SHA1>..master --ancestry-path --merges --oneline -1
A..B
range de commit, mais n'utilisez pas de range comme so ::git log HEAD --oneline -1
>82c12a9 (HEAD, origin/remote-branch-name, origin/master, origin/dev, origin/HEAD, master, dev) commit message
.master
c'est toujours préféré s'il se trouve dans cette liste . De là, c'est moins clair. Vous pouvez essayer de lire la branche git du fichier .gitmodules:git config -f .gitmodules submodule.src/foo/submodule.branch
. Cela pourrait être une fourchette / pr de longue date. Vous pouvez cd pour repo root et exécutergit config submodule.src/foo/submodule.branch
. Vous pouvez également utiliser la branche git actuelle des superprojets.git config submodule.src/foo/submodule.branch
peut être influencé par n'importe quelle variété de configurations git, y compris un fichier .gitconfig repo-local. (nécessite l'exécutiongit config --local include.path ./path/to/your/.gitconfig
)