Git - разница слияния ветвей
У меня три ветки A, B и C.
B регулярно сливается с C.
o---o---o A
/
--------o---o---o---o---o---o B
\ \ \ \
o---o---o---o---o---o C
Теперь я хочу объединить изменения, которые я сделал в C, но без слияний с B, поверх A.
Каков самый простой способ сделать это в git?
Ответы
Ответ 1
Используйте git rebase.
Сначала переустановите свой C поверх B:
git checkout C
git checkout -b rebasedC #Let do a new branch for it also, just in case
git rebase B
он поместит все C-фиксации на B.
Теперь мы хотим, чтобы ветвь трансплантата rebasedC от B до A:
git rebase --onto A B rebasedC
Итак, теперь у вас есть C-коммиты на вершине A в ветке rebasedC. Теперь вы можете быстро переслать свой A:
git checkout A
git merge rebasedC
git branch -d rebasedC# I don't think you would need it.
Это все, надеюсь.
Ответ 2
Если я правильно понимаю, вы хотите взять некоторые коммиты из C в A.
Если это так, почему бы вам не "вишнево-выбрать" их? Это может привести к конфликтам, но я думаю, что это ваш лучший шанс:)
http://schacon.github.com/git/git-cherry-pick.html
http://schacon.github.com/git/user-manual.html#reordering-patch-series
Ответ 3
Вы можете попробовать вишневый выбор C не слияния патчей. Будьте готовы к конфликтам слияния.:)