Уявімо собі, що у нас є master
філія.
Тоді ми створюємо newbranch
git checkout -b newbranch
і зробіть два нові зобов’язання newbranch
: commit1 та commit2
Потім переходимо на майстер і робимо cherry-pick
git checkout master
git cherry-pick hash_of_commit1
Дивлячись на те, gitk
ми бачимо, що commit1 та його вишнева версія мають різні хеши, тому в технічному відношенні це два різні коміти.
Нарешті ми зливаємось newbranch
у master
:
git merge newbranch
і бачите, що ці два коміти з різними хешами були об'єднані без проблем, хоча вони означають, що одні й ті ж зміни слід застосовувати двічі, тому один з них повинен зазнати невдачі.
Чи дійсно git робить розумний аналіз вмісту фіксації під час об'єднання та вирішує, що зміни не слід застосовувати двічі або ці комірки позначаються внутрішньо як пов’язані між собою?