当您从一个分支(比如“主题”)挑选一个提交到另一个(让我们称之为“主”)提交时,该提交的历史将被重写,它的哈希值发生变化,它实际上变成了一个新的、独立的提交。
但是,当您随后针对主 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
这个魔法是如何工作的?IE。git如何知道它应该将C应用于D',而不是D应用于D'?