Подтвердить что ты не робот

Почему перестановка после набора вишни не применяется одновременно к одной и той же фиксации?

Когда вы черри выбираете фиксацию из одной ветки (например, "тема" ) на другую (назовем ее "хозяином" ), история этого фиксации переписывается, изменяется хеш-код, и она становится новой независимой фиксацией.

Однако, когда вы впоследствии переустанавливаете тему против 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'?

4b9b3361

Ответ 1

Ответ на странице man для git-rebase:

Обратите внимание, что любые фиксации в HEAD, которые вводят те же текстовые изменения, что и фиксация в HEAD.., опущены (то есть патч, уже принятый выше по течению с другим сообщением фиксации или временной меткой, будет пропущен).

Rebase просматривает текстовое изменение и отказывается воспроизвести его, если он уже существует на ветке, на которую вы переделываете.