2010-04-12 5 views
2

순차적 커밋 세트를 하나의 (로컬) 브랜치에서 다른 브랜치로 옮기는 방법이 있습니까? 나는 꽤 많이 조사했지만, 내가하고 싶은 일에 대해 명확한 답을 찾지 못했습니다. , 나는이 작업을 수행 할 수 있습니다 알고한 브랜치에서 다른 브랜치로 순차적 인 커밋 세트 이동하기

 
master A---B---C 
       \ 
feature-1   M---N---O 
          \ 
f1-crazy-idea    P---R---Q 

을 :

 
master A---B---C 
       \ 
feature-1  M---N---O---P---R---Q 

그리고 마지막 3 커밋이 같은 더 나을 것이라고 결정했다 : 예를 들어

, 나는이 있다고 가정 해 작동하지 않습니다 :

 
$ git log --graph --pretty=oneline (copying down sha-1 ID's of P, R, Q) 
$ git checkout feature-1 
$ git reset --hard HEAD^^^ 
$ git checkout -b f1-crazy-idea 
$ git cherry-pick <P sha1> 
$ git cherry-pick <R sha1> 
$ git cherry-pick <Q sha1> 

나는 그 대신에 더 많은 conc 비록 내가 많은 행운을 갖지는 않았지만이 일을하는 ise 방법, 아마도 git rebase로.

어떤 통찰력이라도 대단히 감사하겠습니다.

감사합니다,

제이미

+0

일반적인 대답 (이 간단한 경우에는 필요하지 않음)에는'rebase --onto'가 필요합니다. http : //stackoverflow.com/questions/1994463/how-to-cherry-pick-a-range-of-commits-and-merge-into-another-branch/1994491#1994491 또는 http://stackoverflow.com/questions/ 2369426/how-to-move-certain-commits-to-another-branch-in-git/2369516 # 2369516 또는 http://stackoverflow.com/questions/2100851/how-to-undo-a-commit-and- @ 2100953 # 2100953 – VonC

답변

6

(git rebase --onto)가 있지만,이 경우 당신이 그들을 이동할 필요가 없습니다. Checkout feature-1 같은 지점에 새로운 지점 f1-crazy-idea을 작성하고 (feature-1에 머물러 있습니다.) 하드 리셋을 뒤로합니다. 3

+0

@ 마이클 : 당신의 대답을 먼저 보지 못했습니다. 제 것을 삭제합니다. 덧붙여서 – VonC

+0

+1) – VonC

관련 문제