2011-11-09 14 views
23

Ecco un esempio grafico di filiale/commit storia:Git Lista rami fusi in un ramo, ma non in un altro

A--- master 
|\ 
| B-----G--------P feature2 
|\  \  \ 
| -----F--J--L--O--Q integration 
|\ / // 
| C--E--H--K/ feature1 
\   /
    D---------M feature3 

In circostanze normali, ci fondiamo ramo integrazione in master e fatto. Ma ... ci sono casi eccezionali in cui solo alcune caratteristiche specifiche devono essere unite in master ... es: solo feature1. In tal caso, ramo feature1 viene unita master (commit R):

A-------------------------R master 
|\      /
| B-----G--------P / feature2 
|\  \  \ /
| -----F--J--L--O--Q/  integration 
|\ / // /
| C--E--H--K--/------   feature1 
\   /
    D---------M     feature3 

Domanda: Vorrei un comando che mi avrebbe detto che si dirama sono fusi nel processo di integrazione, ma non in master. Il risultato dovrebbe essere: feature2 e feature3.

Un riferimento incrociato tra questi 2 comandi è l'unico modo?

git branch --no-merged master 
git branch --merged integration 

Oppure, potrebbe essere anche un comando che lista merge commit nella filiale di integrazione non presenti nel master. Il risultato dovrebbe essere: J, O, Q

+11

Ben fatto sull'arte ASCII! –

risposta

15
comm -12 <(sort <(git branch --no-merged master)) <(sort <(git branch --merged integration)) 
+0

Qualche alternativa a Windows? –

+0

Prova ['fc'] (http://ss64.com/nt/fc.html) in windows – Andy

+0

Beh, sembra che la versione corrente di msysgit non supporti la sostituzione del processo ... Inoltre, il comando fc in git bash sembra per essere l'unix, non quello di windows. –

Problemi correlati