Come elencare i rami che contengono un dato commit?

Come posso interrogare git per scoprire quali rami contengono un dato commit? gitk di solito elenca i rami, a meno che ce ne siano troppi, nel qual caso dice solo “molti (38)” o qualcosa del genere. Devo conoscere l’elenco completo o almeno se determinati rami contengono il commit.

Dalla pagina di manuale di git :

git branch --contains  

Elenca solo i rami che contengono il commit specificato (HEAD se non specificato). Implica – --list .


  git branch -r --contains  

Elenca anche i rami di tracciamento remoto (come indicato nella risposta dell’utente3941992 di seguito) che è “rami locali che hanno una relazione diretta con un ramo remoto”.


Vedi anche questo articolo pronto per il git .

Il tag --contains comprenderà se un certo commit è stato ancora inserito nel tuo branch. Forse hai un SHA di commit da una patch che pensavi di aver applicato, o vuoi solo verificare se il commit per il tuo progetto open source preferito che riduce l’utilizzo della memoria del 75% è ancora in corso.

 $ git log -1 tests commit d590f2ac0635ec0053c4a7377bd929943d475297 Author: Nick Quaranto  Date: Wed Apr 1 20:38:59 2009 -0400 Green all around, finally. $ git branch --contains d590f2 tests * master 

Nota: se il commit è su un ramo di monitoraggio remoto , aggiungere l’opzione -a .
(come commenta MichielB sotto )

 git branch -a --contains  

MatrixFrog commenta che mostra solo quali rami contengono quel commit esatto .
Se vuoi sapere quali rami contengono un commit “equivalente” (cioè quali rami hanno selezionato come ciliegia che commettono) è git cherry :

Poiché git cherry confronta il changeset piuttosto che l’id di commit (sha1) , puoi usare git cherry per scoprire se un commit che hai fatto localmente è stato applicato sotto un id di commit differente.
Ad esempio, ciò avverrà se si alimentano le patch tramite e-mail anziché premere o tirare direttamente i commit.

  __*__*__*__*__>  / fork-point \__+__+__-__+__+__-__+__>  

(Qui, i commit contrassegnati con ” - ” non vengono visualizzati con git cherry , il che significa che sono già presenti in .)

Puoi eseguire:

 git log ..HEAD --ancestry-path --merges 

Dal commento dell’ultimo commit nell’output è ansible trovare il nome del ramo originale

Esempio:

  c---e---g--- feature / \ -a---b---d---f---h---j--- master git log e..master --ancestry-path --merges commit h Merge: gf Author: Eugen Konkov <> Date: Sat Oct 1 00:54:18 2016 +0300 Merge branch 'feature' into master