2014-01-19 4 views
2

У меня есть следующий случай:Git дублировать одну ветвь в другую

     K---L new-feature 
        /
      H---I---J---M dev-team1 
     /
      E---F---G dev-main 
     /
A---B---C---D master 

И я хочу, чтобы переместить только новой функции (K --- L) филиал в DEV-главного филиала без (H --- I --- J) форма dev-team1, однако я хочу, чтобы новая функция (K --- L), чтобы оставаться отдельной веткой.

Нечто подобное:

     K---L new-feature 
        /
      H---I---J---M dev-team1 
     /
      E---F---G---K'---L' dev-main 
     /
A---B---C---D master 

ответ

4

Это работа для cherry-pick. Попробуйте

git checkout dev-main 
git cherry-pick K 
git cherry-pick L 

Вы также можете использовать синтаксис, описанный в gitrevisions documentation указать диапазон коммитов. В этом примере вы хотите объединить совершает достижим из new-feature ветви, но не от dev-team1 ветви, так что вы могли бы написать

git checkout dev-main 
git cherry-pick dev-team1..new-feature 

Также проверьте этот пост о how to merge a specific commit in Git.

+0

Что делать, если у меня есть много коммитов, как: K, L, N, O, P? Я напишу команду 'git cherry-pick SHA' для каждого? –

+0

@ EkKosmos, я обновил свой ответ с информацией об указании 'K' и' L' вместе, что может быть полезно, если у вас много коммитов на 'cherry-pick'. – Chris