2011-03-21 2 views
1

업스트림 SVN 브랜치를 추적하는 로컬 브랜치가 있습니다.이 브랜치에는 많은 변경 작업이 이루어졌지만 로컬 변경 작업도 수행되었습니다. 그 시간 동안 저는 업소를 자신의 지사에 자주 병합 시켰고, 체리 채취 된 고립 된 커밋을 상류로 보냈습니다. 그래서, 본질적으로, 내 역사는 대규모 clusterfest 다음과 같습니다이다업스트림 변경 사항을 푸시하기 전에 많이 병합 된 브랜치 리셋

A--B--C--D--b'-E--F--e'--G--H   (svn) 
\  \  \   \ 
    a--b--c--d--e--f--g--h--i--j   (mine) 

는 상류 전자의 변경을 포함하고, 내 지점 상류에서 모든 변경 사항이 포함되어 있습니다. 지금은 (F '다음 수동 병합 해상도 유지됩니다 무엇 인 상태)

A--B--C--D--b'-E--F--e'--G--H 
          \ 
           a--b--d--f'-g--h--i 

에 도착하고 싶습니다. 추가적인 어려움으로는 svn 브랜치의 이름 변경이 있습니다.이 브랜치는 merge 커밋 중 하나에서 수행되었습니다. 여기에는 내 브랜치가 병합 전후의 파일에 대한 변경 사항이 포함되어 있습니다.

어떻게하면 좋을까요? 명백한 git rebase -m svn mine은 이름을 감지하지 못해서 잘랐지 않고, 내 브랜치의 팁이 업스트림 브랜치와 똑같은 내용을 가진 라인의 충돌에 대해 많은 질문을합니다.

답변

1

당신은 (그냥 추측)을 시도 할 수 있습니다 :

git rebase -i --onto H a j 
# then remove all commits you don't want (already cherry-picked) 
# hope the best :D 

또 다른 가능성은, 커밋의 수에 따라하는 것입니다 각각 개별적으로 커밋 벚꽃 선택하십시오. 나는 최신 버전의 자식 자식도 커밋 범위를 선택할 수 있다고 생각하지만, 그것에 대해서는 잘 모르겠다.

+0

"cherry-pick everything individual"옵션이 승리했다. - / –

관련 문제