Imaginons que nous ayons une master
succursale.
Ensuite, nous créons un newbranch
git checkout -b newbranch
et faites deux nouveaux commits pour newbranch
: commit1 et commit2
Ensuite, nous passons au master et faisons cherry-pick
git checkout master
git cherry-pick hash_of_commit1
En examinant,gitk
nous voyons que commit1 et sa version triée sur le volet ont des hachages différents, donc techniquement, ce sont deux commits différents.
Enfin, nous fusionnons newbranch
dans master
:
git merge newbranch
et voyez que ces deux commits avec des hachages différents ont été fusionnés sans problème bien qu'ils impliquent que les mêmes modifications doivent être appliquées deux fois, donc l'une d'elles devrait échouer.
Est-ce que git fait vraiment une analyse intelligente du contenu du commit lors de la fusion et décide que les changements ne doivent pas être appliqués deux fois ou que ces commits sont marqués en interne comme liés entre eux?
la source
Après une telle fusion, vous pouvez avoir des commits triés sur le volet dans l'historique deux fois.
Solution pour éviter cela, je cite un article qui recommande pour les branches avec des commits en double (triés sur le volet) d'utiliser le rebase avant la fusion:
EDIT Corrections supposées par le commentaire de David Lemon
la source
---Y---b2'---b4'