Предположим, что у нас есть ветвь master
.
Затем мы создаем a 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 делает интеллектуальный анализ содержимого фиксации при слиянии и принимает решение о том, что изменения не должны применяться дважды, или эти коммиты помечены как внутренние вместе?