Mostrar ramas que no contienen confirmación

git branch -a --contains <hash> me da todas esas 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 creo que la solución es algo como:

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

¿Mostrar todas las ramas en las que está activada la confirmación A y no está activada la confirmación B? parecería aplicarse, pero el enfoque parece más complicado de lo necesario.

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

preguntado el 22 de mayo de 12 a las 18:05

Para visibilidad: La --no-contains la bandera fue añadida en Git 2.13.. Como se indica en mi respuesta. -

3 Respuestas

grep tiene un -F opción 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 tengan una coincidencia parcial. Como sugiere antak, podemos usar comm en cambio, para una diferencia más confiable.

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

Respondido el 01 de diciembre de 15 a las 20:12

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

@antak Gracias! ¡Buena atrapada! - leedm777

La --no-contains la bandera fue añadida en Git 2.13.

Respondido el 22 de junio de 17 a las 00:06

Dado que la respuesta aceptada entrará en conflicto si los nombres de las sucursales coinciden parcialmente, aquí hay uno que maneja esta situación.

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

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

respondido 27 nov., 15:02

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.