Comment vérifier si une branche Git est entièrement fusionnée dans la branche principale (main)

GitGitBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire (lab), vous apprendrez à vérifier efficacement si une branche Git a été entièrement fusionnée dans une autre branche, en particulier la branche main. Cette compétence est essentielle pour maintenir un dépôt Git propre et organisé.

Vous commencerez par utiliser la commande git branch --merged main pour identifier les branches qui sont entièrement intégrées dans main. Ensuite, vous vérifierez les résultats à l'aide de la commande git log main ^branch pour confirmer que tous les commits de la branche cible sont présents dans main. Enfin, vous testerez ces méthodes avec une branche partiellement fusionnée pour comprendre les résultats différents.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL git(("Git")) -.-> git/BranchManagementGroup(["Branch Management"]) git/BranchManagementGroup -.-> git/branch("Handle Branches") git/BranchManagementGroup -.-> git/checkout("Switch Branches") git/BranchManagementGroup -.-> git/merge("Merge Histories") git/BranchManagementGroup -.-> git/log("Show Commits") git/BranchManagementGroup -.-> git/cherry_pick("Cherry Pick") subgraph Lab Skills git/branch -.-> lab-560045{{"Comment vérifier si une branche Git est entièrement fusionnée dans la branche principale (main)"}} git/checkout -.-> lab-560045{{"Comment vérifier si une branche Git est entièrement fusionnée dans la branche principale (main)"}} git/merge -.-> lab-560045{{"Comment vérifier si une branche Git est entièrement fusionnée dans la branche principale (main)"}} git/log -.-> lab-560045{{"Comment vérifier si une branche Git est entièrement fusionnée dans la branche principale (main)"}} git/cherry_pick -.-> lab-560045{{"Comment vérifier si une branche Git est entièrement fusionnée dans la branche principale (main)"}} end

Utiliser git branch --merged main

Dans cette étape, nous allons apprendre à utiliser la commande git branch --merged pour voir quelles branches ont été entièrement intégrées dans une autre branche. Cette commande est très utile pour maintenir votre dépôt propre et organisé.

Tout d'abord, assurons-nous que nous sommes dans le répertoire de notre projet. Ouvrez votre terminal et accédez au répertoire my-time-machine :

cd ~/project/my-time-machine

Maintenant, créons une nouvelle branche appelée feature-branch et basculons sur elle. Nous allons simuler des modifications sur cette branche.

git branch feature-branch
git checkout feature-branch
echo "Adding a new feature" >> feature.txt
git add feature.txt
git commit -m "Add new feature"

Vous devriez voir une sortie similaire à celle-ci après le commit :

[feature-branch a1b2c3d] Add new feature
 1 file changed, 1 insertion(+)
 create mode 100644 feature.txt

Maintenant, basculons de nouveau sur la branche master et fusionnons la branche feature-branch dans celle-ci.

git checkout master
git merge feature-branch

Vous devriez voir une sortie indiquant une fusion réussie :

Updating e1f2g3h..a1b2c3d
Fast-forward
 feature.txt | 1 +
 1 file changed, 1 insertion(+)
 create mode 100644 feature.txt

Maintenant que nous avons fusionné feature-branch dans master, utilisons git branch --merged pour voir quelles branches sont maintenant entièrement fusionnées dans master.

git branch --merged master

Cette commande répertoriera toutes les branches dont tous les commits ont été incorporés dans la branche master. Vous devriez voir à la fois master et feature-branch répertoriées, indiquant que feature-branch est maintenant entièrement fusionnée dans master.

Comprendre quelles branches sont fusionnées est important car cela vous aide à identifier les branches que vous pouvez supprimer en toute sécurité, en gardant votre dépôt bien rangé. C'est comme savoir quelles quêtes annexes dans un jeu vous avez terminées et que vous pouvez maintenant ignorer.

Vérifier avec git log main ^branch

Dans l'étape précédente, nous avons utilisé git branch --merged pour voir quelles branches ont été fusionnées dans master. Maintenant, utilisons une autre commande, git log, pour vérifier cela d'un autre angle. La commande git log avec la syntaxe main ^branch est un moyen puissant de voir les commits qui sont dans main mais pas dans branch.

Tout d'abord, assurez-vous que vous êtes dans le répertoire my-time-machine :

cd ~/project/my-time-machine

Maintenant, utilisons git log pour voir les commits qui sont dans master mais pas dans feature-branch.

git log master ^feature-branch

Étant donné que nous avons entièrement fusionné feature-branch dans master à l'étape précédente, tous les commits de feature-branch sont maintenant également dans master. Par conséquent, cette commande devrait vous montrer les commits qui étaient initialement seulement sur la branche master avant la fusion. Elle ne devrait pas montrer le commit "Add new feature" que nous avons effectué sur feature-branch.

Vous devriez voir une sortie similaire à celle-ci, montrant seulement le(s) commit(s) initial(aux) de la branche master :

commit e1f2g3h4i5j6k7l8m9n0o1p2q3r4s5t6u7v8w9x (HEAD -> master)
Author: Jane Doe <[email protected]>
Date:   Mon Aug 7 10:00:00 2023 +0000

    Send a message to the future

Si feature-branch n'était pas entièrement fusionnée, cette commande montrerait les commits qui sont sur master mais pas sur feature-branch, ainsi que tous les commits qui sont sur feature-branch mais pas sur master. Le fait que le commit "Add new feature" n'est pas affiché ici confirme qu'il est maintenant présent dans master.

Cette syntaxe git log main ^branch est un excellent moyen de confirmer visuellement si tous les commits d'une branche sont présents dans une autre. Elle vous aide à comprendre la relation entre les différentes branches de votre dépôt.

Tester avec une branche partiellement fusionnée

Dans les étapes précédentes, nous avons vu comment git branch --merged et git log main ^branch fonctionnent avec une branche entièrement fusionnée. Maintenant, voyons ce qui se passe avec une branche qui est partiellement fusionnée, c'est-à-dire que certains, mais pas tous, de ses commits ont été intégrés dans une autre branche.

Tout d'abord, assurez-vous que vous êtes dans le répertoire my-time-machine :

cd ~/project/my-time-machine

Créons une nouvelle branche appelée partial-feature et basculons sur elle :

git branch partial-feature
git checkout partial-feature

Maintenant, effectuons deux commits sur cette nouvelle branche :

echo "Adding part 1 of the feature" >> partial.txt
git add partial.txt
git commit -m "Add part 1"
echo "Adding part 2 of the feature" >> partial.txt
git add partial.txt
git commit -m "Add part 2"

Vous devriez voir une sortie similaire à celle-ci après les commits :

[partial-feature a1b2c3d] Add part 1
 1 file changed, 1 insertion(+)
 create mode 100644 partial.txt
[partial-feature e1f2g3h] Add part 2
 1 file changed, 1 insertion(+)

Maintenant, basculons de nouveau sur la branche master et fusionnons seulement le premier commit de partial-feature. Nous pouvons le faire en utilisant git cherry-pick. Tout d'abord, nous avons besoin du hachage du commit "Add part 1". Vous pouvez le trouver en exécutant git log partial-feature et en copiant le hachage du premier commit.

git checkout master
## Remplacez <commit_hash> par le véritable hachage du commit "Add part 1"
git cherry-pick <commit_hash>

Vous devriez voir une sortie indiquant que le cherry-pick a réussi :

[master i1j2k3l] Add part 1
 Date: Mon Aug 7 10:05:00 2023 +0000
 1 file changed, 1 insertion(+)
 create mode 100644 partial.txt

Maintenant, utilisons de nouveau git branch --merged master :

git branch --merged master

Vous devriez voir master et feature-branch répertoriées, mais pas partial-feature. C'est parce que partial-feature a toujours le commit "Add part 2" qui n'a pas été fusionné dans master. git branch --merged ne répertorie que les branches où tous les commits sont présents dans la branche cible.

Enfin, utilisons git log master ^partial-feature :

git log master ^partial-feature

Cette commande vous montrera les commits qui sont dans master mais pas dans partial-feature. Elle devrait montrer le(s) commit(s) initial(aux) de master, le commit "Add new feature" (qui est maintenant dans master) et le commit "Add part 1" (que nous avons cherry-pické). Elle ne devrait pas montrer le commit "Add part 2", car ce commit est seulement sur partial-feature.

Cela démontre comment git branch --merged et git log main ^branch peuvent vous aider à comprendre l'état de fusion de vos branches, même lorsque seulement certains commits ont été intégrés.

Résumé

Dans ce laboratoire (lab), nous avons appris à vérifier si une branche Git est entièrement fusionnée dans une autre branche, plus précisément main (ou master). Nous avons commencé par utiliser la commande git branch --merged main, qui répertorie toutes les branches dont les commits sont entièrement intégrés dans la branche main. C'est un moyen rapide d'identifier les branches prêtes à être nettoyées.

Nous avons ensuite exploré une méthode de vérification plus précise en utilisant git log main ^branch. Cette commande affiche les commits qui sont dans main mais pas dans la branche spécifiée. Si cette commande ne renvoie aucune sortie, cela confirme que tous les commits de la branche sont présents dans main, vérifiant ainsi la fusion complète. Enfin, nous avons testé ces méthodes avec une branche partiellement fusionnée pour comprendre la différence dans la sortie et consolider davantage notre compréhension de la manière de déterminer précisément l'état de fusion d'une branche.