Encuentra twigs Git no fusionadas?

Tengo un repository de Git con muchas twigs, algunas de ellas ya fusionadas y otras no. Dado que el número de twigs es bastante grande, ¿cómo puedo determinar qué twigs aún no se han fusionado? Me gustaría evitar tener que hacer una fusión de “pulpo” y volver a fusionar las twigs que ya se han fusionado.

Prueba esto:

git branch --merged master 

Hace lo que dice en el estaño (enumera las twigs que se han fusionado en el master ). También puede obtener el inverso con:

 git branch --no-merged master 

Si no especifica master , por ejemplo …

 git branch --merged 

entonces te mostrará las twigs que se han fusionado en la HEAD actual (por lo que si estás en master , es equivalente al primer comando, si estás en foo , es equivalente a la git branch --merged foo ).

También puede comparar twigs ascendentes especificando el -r y un ref para verificar, que puede ser local o remoto:

 git branch -r --no-merged origin/master 

También puede usar el parámetro -r para mostrar twigs remotas que no se combinaron en el maestro:

 git branch -r --merged master git branch -r --no-merged 

Si una twig ya está fusionada, fusionarla nuevamente no hará nada. Por lo tanto, no tiene que preocuparse por la “fusión” de las sucursales que ya están fusionadas.

Para responder a su pregunta, simplemente puede emitir

  git branch --merged 

para ver las twigs fusionadas o

  git branch --no-merged 

para ver las twigs no sumergidas. Su twig actual está implícita pero puede especificar otras twigs si lo desea.

  git branch --no-merged integration 

le mostrará twigs que aún no se han fusionado en la twig de integration .

La secuencia de comandos siguiente encontrará todas las twigs de origin/* que están por delante de la twig actual

 #!/bin/bash CURRENT_BRANCH=$(git rev-parse --abbrev-ref HEAD) echo -e "Current branch: \e[94m$CURRENT_BRANCH\e[0m" echo '' git branch -a | grep remotes/origin/ | while read LINE do CMD="git diff --shortstat remotes/origin/${CURRENT_BRANCH}...${LINE}" if $CMD | grep ' file' > /dev/null; then echo -e "\e[93m$LINE\e[0m" | sed 's/remotes\/origin\///' $CMD echo '' fi done 

La versión actualizada de la secuencia de comandos