Давайте представим, что у нас есть 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 проводит интеллектуальный анализ содержимого коммита при слиянии и решает, что изменения не должны применяться дважды, или эти коммиты помечаются внутри как связанные вместе?