2014-05-14 2 views
1

마스터 브랜치에서 몇 개의 새 파일이 추가 된 원래 파일의 서브 세트 인 프로젝트의 "topicA"브랜치를 작성했습니다. 이렇게하려면 분기를 만들고, 불필요한 파일을 삭제하고, 새로운 파일을 추가하고 커밋했습니다.여러 브랜치의 Git 리베이스가 변경되지 않음

그런 다음 지형지 물 "topicB"를 만들고 약간 변경했습니다.

   E--H--I  topicA 
      /
     / K--L--M topicB 
     / /
A--B--C--D--F--J--N  master 

"topicB"의 변경 사항을 "topicA"에 적용하고 싶습니다. 결과 트리는 다음과 같이 보일 것입니다 :

나는 이것을 위해 rebase를 사용하려했지만 원하는 결과를 얻을 수 없었습니다.

git checkout topicA 
git rebase topicB 

결과적으로 병합과 일부 충돌이 발생하지만 주제 B의 모든 변경 사항이 새 주제 A에 존재하지는 않습니다.

는 또한이 마스터가 공통 조상 인 상태 topicA에 topicB에서 변경 사항을 적용 할 생각
git rebase --onto topicA master topicB 

을 시도하지만,이 날 변경 사항으로 topicB 지점에있는 끝났다.

주제 B의 변경 사항으로 마스터를 리베이스 한 후 topicA에 중요한 파일을 계속 변경하려면 master에서 topicA를 리베이스 할 수 있습니다.

master에서 분기 한 다음 master에서 분기 한 다른 분기에서 rebase 할 수 있습니까? rebase를 잘못 사용하고 있습니까? 이 유스 케이스에 병합 하시겠습니까?

감사

업데이트 @VonC에 의해 설명 된 REBASE 작업 및처럼 지금은 나무가 : 다시 새로운 변화를 얻을 수 topicB에서 topicA을 리베이스 할 때

      E--H--I topicA 
         /
       K--L--M--O  topicB 
       /
A--B--C--D--F--J--N    master 

I 도망 갔다

git checkout topicA 
git rebase topicB 

그러나 topicA를 rebase하기 위해 이미 해결 한 충돌을 해결하도록 요청하고 있습니다. 그것은 M에서부터 분기했습니다. 이미 해결 한 모든 갈등을 다루지 않고 주제 A를 주제 B 'O'로 바꾸는 방법은 무엇입니까?

+0

당신이 (여전히 수) 활성화해야'자식 rerere' : HTTP

 E'--H'--I' topicA / K--L--M topicB / A--B--C--D--F--J--N master 

그런 다음, 그래, 당신은 master 위에 topicA을 리베이스 수 : //stackoverflow.com/a/5519698/6309 및 http://stackoverflow.com/a/3284288/6309 및 http://stackoverflow.com/a/10018939/6309 – VonC

답변

2

rebase --onto는 정확한 topicA이 생성되는 커밋 사용해야합니다

git rebase --onto topicB D topicA 

이 그림에 대한 that example를 참조하십시오.

을 얻을 것입니다 그 :

다음
git checkout topicA 
git rebase master 
관련 문제