2012-04-17 11 views
7

Ho più rami e ho scoperto un commit A che ha introdotto un bug nel sistema. Questo è stato successivamente corretto dal commit B su uno dei rami e ricondotto al master, ma al momento non è stato raccolto da tutti i rami incriminati.Mostra tutti i rami che eseguono il commit A è attivo e il commit B non è attivo?

Mi chiedevo se c'è un comando che mostrerà tutti i rami incriminati che hanno commit A ma non hanno commit B?

ho utilizzato la seguente per determinare che un commit esiste su un ramo

$ git branch -r --contains=A 

ma voglio cercare di aggiungere a questo per includere qualcosa come

$ git branch -r --contains=A ^--contains=B 

Come nota a margine Ho controllato e non ci sono altri commit che contengano lo stesso cambiamento, cioè non è stato selezionato su altri rami, ma alcuni rami hanno commit B in cui sono stati divergenti dal master sin dall'unione e altri no dove esistevano già prima che il commit B fosse intr oduced.

Inoltre, la possibilità di controllare più commit potrebbe essere utile quando il commit che ha risolto un problema (commit B in questo caso) viene selezionato su più rami che già assegnano SHA di commit diversi.

risposta

3

Hai provato questo:

diff <(git branch -r --contains=A) <(git branch -r --contains=B) 

E 'ben lungi dall'essere perfetto, ma potrebbe aiutare.

+0

Ciao, sembra che potrebbe essere molto vicino, come dici tu non è perfetto. Potresti fornire alcuni dettagli su cosa segue 'diff <() <()' – Cellze

+1

Questo link spiega cosa 'diff <() <()' fa: http://crashingdaily.wordpress.com/2008/03/ 06/diff-two-stdout-stream/Potrebbe funzionare solo con BASH. –

+0

Il comando 'comm' (ad esempio' comm -23') dovrebbe essere utile per quello che stai facendo. – antak

Problemi correlati