あるブランチ(「トピック」など)から別のブランチ(「マスター」と呼びます)へのコミットをチェリーピックすると、そのコミットの履歴が書き換えられ、ハッシュが変更され、事実上、新しい独立したコミットになります。
ただし、後でマスターgitに対してトピックをリベースする場合は、コミットに2回適用しないことを知っているほど賢いです。
例:
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'に適用しないことをどのように認識しますか?