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