git - объединить разницу веток - PullRequest
10 голосов
/ 29 сентября 2011

У меня есть три ветви 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?

Ответы [ 3 ]

8 голосов
/ 29 сентября 2011

Используйте git rebase.

Во-первых, перебазируйте свой C поверх B:

git checkout C
git checkout -b rebasedC #Let's do a new branch for it also, just in case
git rebase B

это поместит все коммиты C на B. Теперь мы хотим перебросить ветку трансплантата C с 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 голосов
/ 29 сентября 2011

Если я правильно понимаю, вы хотите перенести несколько коммитов из C в A.

Если это так, почему бы вам не "черкнуть их"?Это может привести к конфликтам, но я думаю, что это ваш лучший шанс:)

http://schacon.github.com/git/git-cherry-pick.html

http://schacon.github.com/git/user-manual.html#reordering-patch-series

1 голос
/ 29 сентября 2011

Вы можете попробовать вишневый сбор патчей без слияния.Будьте готовы решать конфликты слияния.:)

...