2011-11-09 8 views
23

Aquí es un gráfico ejemplo de la rama de la historia/commit:lista Git ramas se fusionaron en una rama, pero no en otro

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

En circunstancias normales, nos fusionamos rama integración en maestro y hecho. Pero ... hay casos excepcionales en los que solo una característica específica debe fusionarse en el maestro ... por ejemplo, solo feature1. En ese caso, la rama feature1 se combina en maestro (commit R):

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

Pregunta: Me gustaría tener un comando que me diría qué ramas se fusionan en la integración pero no de maestro. El resultado debería ser: feature2 y feature3.

¿Es una referencia cruzada entre estos 2 comandos la única manera?

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

O bien, podría ser también un comando que lista fusionar comete en la rama de integración que no están presentes en el maestro. El resultado debería ser: J, O, Q

+11

¡Bien hecho en el arte ASCII! –

Respuesta

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

¿Alguna alternativa de Windows? –

+0

Pruebe ['fc'] (http://ss64.com/nt/fc.html) en Windows – Andy

+0

Bueno, parece que la versión actual de msysgit no admite la sustitución de procesos ... Además, el comando fc en git bash parece ser el de Unix, no el de Windows. –

Cuestiones relacionadas