2012-05-22 14 views
8

git branch -a --contains <hash> me da todas las ramas que contienen hash. lo que quiero es git branch -a --no-contains <hash>. Desafortunadamente, no parece haber un comando para lograr esto, así que estoy pensando que la solución es algo así como:Mostrar ramas que no contengan commit

git branch -a | grep -v output of(git branch -a --contains) pero mi golpe no está a la altura.

Show all branches that commit A is on and commit B is not on? parece aplicarse, pero el enfoque parece más complicado de lo necesario.

¿Cuál es el mejor/más simple enfoque para lograr lo anterior?

+0

Para visibilidad: ** El indicador '--no-contains' fue agregado en [Git 2.13] (https://github.com/git/git/blob/v2.13.0/Documentation/RelNotes/2.13.0 .txt) ** .. Como se indica en [mi respuesta] (https://stackoverflow.com/a/44687845/1667513). – nonsensickle

Respuesta

11

grep tiene una opción -F que coincide con cadenas fijas. Sería útil para lo que estás haciendo.

git branch -a | grep -vF "$(git branch -a --contains <hash>)" 

Desafortunadamente, -F filtrará los nombres de las ramas que tienen una coincidencia parcial. Como sugiere antak, podemos usar comm para una diferencia más confiable.

git branch -a | sort | comm -3 - <(git branch -a --contains <hash> | sort) 
+1

+1 Esto hace el truco. Simple y al grano. – ralphtheninja

+0

sí, definitivamente. ¡Gracias! – kayaker243

+0

Tenga en cuenta que esto ocultará incorrectamente las ramas que coinciden parcialmente con los nombres de las ramas que contienen dicha confirmación. p.ej. 'echo -e" aaa \ nbbb "| grep -vF "$ (echo aa)" ' – antak

2

Dado que la respuesta aceptada se ejecutará si los nombres de las ramas coinciden parcialmente, aquí hay uno que maneja esta situación.

git branch -a | comm -3 - <(git branch -a --contains <hash>) 

| sort puede añadirse al final de ambos comandos si la advertencia comm: file 1 is not in sorted order le molesta. Sin embargo, esto no es necesario para obtener resultados correctos ya que el orden de las dos entradas es equivalente.

Cuestiones relacionadas