Как можно выбрать другой путь слияния? - PullRequest
0 голосов
/ 24 января 2012

У меня есть такая структура:

   B - C - D <- feature
  /         \  
 A-----------E <- master  
 ^ mytag

В коммитах B, C и D указывается путь к ветви объекта. А это общая база. Эта функция объединена с мастером как E commit. Я пометил (автоматически) совершить А.

Я хотел бы автоматически без вмешательства пользователя (из скрипта), независимо от того, сколько коммитов есть в ветви функций, чтобы вишня выбрала «mytag» для «master» как A, E (в данном случае) в другой ветви.

Теперь, если я сделаю:

git checkout other    
git cherry-pick mytag..master

он выберет коммиты A, B, C, D и E. Я хотел бы, чтобы он выбирал коммиты только из основной ветки, то есть A и E. Примечание: я не хочу сливаться с E противоположным образом. Я хочу, чтобы это было в мастере. А от А до Е совсем не уверен, что это ветвление. Это может быть A --- E. Просто мне нужно что-то вроде оператора "..", но чтобы использовать другой ответвление.

Заранее спасибо за помощь!

Дополнительно: Третья ветка, где я должен был выбрать вишню, должна выглядеть примерно так:

F - G - H - A - E <- other 

т.е. А и Е будут выбраны вишней в «другой» ветке.

1 Ответ

0 голосов
/ 25 января 2012

Это ответ:

call git cherry-pick -m 1 --first-parent mytag..master
if %errorlevel% == 128 then call git cherry-pick --first-parent mytag..master

- первый родитель - недокументированный вариант вишня . Я видел это в команде log , и она работает и для прежней. Он делает именно то, что мне нужно. Для обхода первого родителя, а не ветви, как по умолчанию.

git log --first-parent mytag..master

возвращает только коммиты A и E . -m 1 опция используется только для коммитов слияния и неудачна для коммитов без слияния и наоборот. Поэтому я пытаюсь с и если не получится - без.

...