Trouver des twigs Git non fusionnées?

J’ai un repository Git avec de nombreuses twigs, certaines déjà fusionnées et d’autres non. Étant donné que le nombre de twigs est assez important, comment puis-je déterminer quelles twigs n’ont pas encore été fusionnées? Je voudrais éviter d’avoir à faire une fusion “pieuvre” et à re-fusionner des twigs qui ont déjà été fusionnées.

Essaye ça:

git branch --merged master 

Il fait ce qu’il dit sur l’étain (répertorie les twigs qui ont été fusionnées dans master ). Vous pouvez également afficher l’inverse avec:

 git branch --no-merged master 

Si vous ne spécifiez pas master , par exemple ..

 git branch --merged 

alors il vous montrera les twigs qui ont été fusionnées dans le HEAD actuel (donc si vous êtes sur master , cela équivaut à la première commande; si vous êtes sur foo , cela équivaut à git branch --merged foo ).

Vous pouvez également comparer les twigs en amont en spécifiant l’ -r et une référence à vérifier, qui peuvent être locales ou distantes:

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

Vous pouvez également utiliser le paramètre -r pour afficher les twigs distantes qui n’ont pas été fusionnées dans master:

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

Si une twig est déjà fusionnée, la fusion à nouveau ne fera rien. Vous n’avez donc pas à vous soucier de “re-fusionner” les twigs déjà fusionnées.

Pour répondre à votre question, vous pouvez simplement émettre

  git branch --merged 

pour voir les twigs fusionnées ou

  git branch --no-merged 

pour voir les twigs non fusionnées. Votre twig actuelle est implicite mais vous pouvez spécifier d’autres twigs si vous le souhaitez.

  git branch --no-merged integration 

affichera les twigs qui ne sont pas encore integration dans la twig d’ integration .

Le script ci-dessous trouvera toutes les twigs d’ origin/* avance sur la twig actuelle

 #!/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 version à jour du script