J’ai un dépôt git avec plusieurs branches.
Comment puis-je savoir quelles branches sont déjà fusionnés dans la branche master ?
J’ai un dépôt git avec plusieurs branches.
Comment puis-je savoir quelles branches sont déjà fusionnés dans la branche master ?
J’ai trouvé moi-même la réponse :
``répertorie les branches qui ont été fusionnées dans la branche actuels
``répertorie les branches qui n’ont pas été fusionnées
Par défaut cela concerne seulement les branches locales. Le indicateur affichera des branches locales et distantes et le
drapeau montre seulement les branches éloignées.
Vous pouvez utiliser le `` commande pour trouver le dernier commit commun entre les deux branches. Si cette validation est identique à la tête de la branche, la branche a été fusionnée complètement.
Notez que `` fait ce genre de chose déjà parce qu’il refuse de supprimer une branche qui n’a pas déjà été complètement fusionné.
Sur le sujet du nettoyage des branches distantes
git branch -r | xargs -t -n 1 git branch -r --contains
Cette liste chaque branche distante suivie par lequel les branches distantes leur dernier SHAs sont à l'intérieur.
Cela est utile pour discerner les branches distantes ont été fusionnés, mais pas supprimé, et qui n'ont pas été fusionnés et sont donc en décomposition.
Si vous utilisez 'tig' (son comme gitk mais terminal), alors vous pouvez
tig origin/feature/someones-decaying-feature
pour voir une branche de commettre l'histoire sans avoir à git checkout
Voici ma technique quand j'ai besoin de comprendre si une branche a été fusionnées, même si elle peut avoir été relocalisée à être à jour avec notre branche principale, qui est un scénario commun pour les branches.
Aucune de ces approches sont infaillibles, mais je les ai trouvés utiles à de nombreuses reprises.
À l'aide d'un outil visuel comme gitk ou TortoiseGit, ou tout simplement la commande git log --tout, aller à travers l'histoire pour voir toutes les fusions à la branche principale. Vous devriez être en mesure de repérer si cette particularité de la branche a été fusionnées ou non.
Si vous avez une bonne habitude de toujours retirer à la fois le local et le distant de la branche lors de la fusion dans une branche, alors vous pouvez simplement mettre à jour et de pruneau télécommandes sur votre autre ordinateur et les branches vont disparaître.
Pour aider à se rappeler ce faisant, je suis déjà en utilisant git flow extensions (AVH édition) création et la fusion de mes branches en local, j'ai donc ajouté ce qui suit git flow crochet pour me demander si je tiens également à l'auto-suppression de la branche distante.
Exemple de création/finition fonction de direction
554 Andreas:MyRepo(develop)$ git flow start tmp
Switched to a new branch 'feature/tmp'
Summary of actions:
- A new branch 'feature/tmp' was created, based on 'develop'
- You are now on branch 'feature/tmp'
Now, start committing on your feature. When done, use:
git flow feature finish tmp
555 Andreas:MyRepo(feature/tmp)$ git flow finish
Switched to branch 'develop'
Your branch is up-to-date with 'if/develop'.
Already up-to-date.
[post-flow-feature-finish] Delete remote branch? (Y/n)
Deleting remote branch: origin/feature/tmp.
Deleted branch feature/tmp (was 02a3356).
Summary of actions:
- The feature branch 'feature/tmp' was merged into 'develop'
- Feature branch 'feature/tmp' has been locally deleted
- You are now on branch 'develop'
556 Andreas:ScDesktop (develop)$
.git/hooks/post-flux-fonction-finition
NAME=$1
ORIGIN=$2
BRANCH=$3
# Delete remote branch
# Allows us to read user input below, assigns stdin to keyboard
exec < /dev/tty
while true; do
read -p "[post-flow-feature-finish] Delete remote branch? (Y/n) " yn
if [ "$yn" = "" ]; then
yn='Y'
fi
case $yn in
[Yy] )
echo -e "\e[31mDeleting remote branch: $2/$3.\e[0m" || exit "$?"
git push $2 :$3;
break;;
[Nn] )
echo -e "\e[32mKeeping remote branch.\e[0m" || exit "$?"
break;;
* ) echo "Please answer y or n for yes or no.";;
esac
done
# Stop reading user input (close STDIN)
exec <&-
exit 0
Si vous n'avez pas toujours supprimer la branche distante, vous pouvez toujours rechercher similaire s'engage à déterminer si la branche a été fusionnée ou non. Le piège ici est de savoir si la branche à distance a été relocalisée à l'méconnaissables, comme l'écrasement de validation ou modification des messages de commit.
Exemple de commandes sur la branche master:
gru
gls origin/feature/foo
glf "my message"
Dans mon bash .profil config
alias gru='git remote update -p'
alias glf=findCommitByMessage
findCommitByMessage() {
git log -i --grep="$1"
}
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.