Warum wendet eine Rebase nach einem Cherry-Pick nicht zweimal dasselbe Commit an?

Wenn Sie ein Commit von einem Zweig (sagen Sie "Thema") zu einem anderen auswählen (nennen wir es "Master"), wird der Verlauf dieses Commits umgeschrieben, sein Hash ändert sich und es wird effektiv ein neues, unabhängiges Commit.

Allerdings ist es klug genug, wenn Sie anschließend ein Thema gegen Master-Git rebasen, um zu wissen, dass Sie sich nicht zweimal auf das Commit anwenden müssen.

Beispiel:

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

Wie funktioniert diese Magie? Dh woher weiß git, dass es C auf D 'anwenden soll, aber nicht D auf D'?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage