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.