Вишневый пик слияния - PullRequest
       29

Вишневый пик слияния

10 голосов
/ 24 октября 2008

Допустим, ветвь B - это тематическая ветвь ветви A, и вам нужны эти изменения в ветке C. Что это значит, когда вы выбираете коммит слияния ветки A и ветки B в ветку C?

Например, если вы используете флаг -m, чтобы указать старую HEAD ветви A, чтобы выбрать слияние с веткой C, то это просто означает "Возьмите различие между выбранным вишней коммитом и старой HEAD ветвь A и применить ее к ветви C? "

Есть ли какие-нибудь ошибки для использования этого метода? (например, будет ли ветвь C выглядеть так, как будто она объединена с веткой A и B? Будет ли применено больше изменений, чем просто коммиты из ветви B?)

1 Ответ

10 голосов
/ 24 октября 2008

Обычно я использую git rebase:

git rebase --onto C A B

Это берет различия между A и B и применяет эти различия к ветви C. В качестве бонуса, rebase пропускает любые фиксации между A и B, которые выполняют те же текстовые изменения, которые уже существуют в ветви C.

Обновление: если вы упомянули в комментариях, помните, что Git никогда не перезаписывает историю прошлого. Таким образом, даже после выполнения перебазирования, описанного выше, вы можете воссоздать новый заголовок ветки при коммите, где B был до перебазирования. К сожалению, я не могу придумать простой способ сделать это в это время утром. Извините, я не могу больше помочь, возможно, кто-то еще придумает легкий путь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...