2014-01-15 4 views
7

한 지점에서 리베이스 :는 힘내 나는 다음과 같은 경우가 다른

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

을 그리고 DEV-주요 지점에서 단지 새로운 기능을 (K --- L) 지점을 이동하려면 없이 (H --- I --- J) 형태 DEV-team1 당신은 체리 픽 K와 L이 커밋 할 수

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

답변

10

git rebase는 당신이 필요합니까한다는 --onto 인수를 가지고와 H I 및 J 선을 저지른 교체합니다.

git checkout new-feature 
git rebase --onto dev-main dev-team1 

# Now new-feature has commits K' and L' after G in dev-main. 
git checkout dev-main 
git merge --ff-only new-feature 

자세한 내용은 man page for "git rebase"을 참조하십시오. (나는 또한 단지 나는 내가 생각하는 커밋을 이동하고있어 한 번 확인에 -i를 추가.) 또한 git cherry-pick를 사용할 수

, 커밋의 수가 적을 경우 특히 :

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

cherry-pick은 커밋 범위를 지원한다는 것을 잊지 마십시오. – onionjake

1

. 당신이 충돌이있는 경우

git checkout dev-main 
git cherry-pick K 

의 오류를 수정하고,

git cherry-pick --continue 
git cherry-pick L 

이 충돌을 해결 할.

대화 형 리베이스를 사용할 수도 있습니다. 열린 편집기에서

git rebase -i head~5 

pick F 
pick G 
+0

각 코드 행 앞에 4- 공 들여 쓰기를 사용하여 답과 질문에 코드 블록을 만들 수 있습니다. – LopSae