Git Merge / Вишневый выбор выпуск - PullRequest
4 голосов
/ 21 июля 2011

Я использую git для большого устаревшего проекта, который имеет две ветви - v1.0 и v2.0. Источник для каждой ветки очень разный в местах, идентичный в других. Когда я исправляю ошибки в ветке v1.0, я должен добавить их в ветку v2.0, используя git cherry-pick, так как git merge 1.0 в основном уничтожит большие части исходного кода v2.0.

Однако новая разработка остановлена ​​на v1.0, и использование git cherry-pick для копирования исправлений в ветку v2.0 обременительно. Я бы предпочел как-то сказать git, что когда я делаю git merge с 1.0 -> 2.0, то сливаюсь только начиная с определенной точки в истории коммитов 1.0 (т.е. когда новая разработка остановлена). Это возможно? Это позволило бы мне сделать несколько исправлений в источнике v1.0 и объединить изменения в v2.0 одним ударом вместо использования нескольких cherry-pick.

1 Ответ

3 голосов
/ 21 июля 2011

из ветки 2.0 выполните

git merge --strategy=ours v1.0

Я сам не тестировал, поэтому сначала попробуйте что-нибудь неважное, но из документации это именно то, что вам нужно.

Из документации:

Это разрешает любое количество головок, но результирующее дерево слияния всегда совпадает с деревом текущей ветви, эффективно игнорируя все изменения из всех других ветвей.Он предназначен для замены старой истории развития боковых веток.Обратите внимание, что это отличается от опции -Xours для стратегии рекурсивного слияния.

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