Когда вы черри выбираете фиксацию из одной ветки (например, "тема" ) на другую (назовем ее "хозяином" ), история этого фиксации переписывается, изменяется хеш-код, и она становится новой независимой фиксацией.
Однако, когда вы впоследствии переустанавливаете тему против master git, достаточно умны, чтобы знать, что не применять к фиксации дважды.
Пример:
A --- B <- master
\
\---- C ---- D <- topic
$ git checkout master
$ git cherrypick D
A --- B --- D' <- master
\
\---- C ---- D <- topic
$ git checkout topic
$ git rebase master
First, rewinding head to replay your work on top of it...
Applying 'C'
A --- B --- D' <- master
\
\---- C' <- topic
Как работает эта магия? То есть. как git знает, что он должен применять C к D ', но не D к D'?