2012-05-18 2 views
1

I는 다음과 같이했다 :힘내 편집 몇 가지를 리베이스

 /-E-F - branch1 
A-B-C - master 
    \-X - branch2 

내가 B으로 업데이트 한 후를 내가 이런 걸 가지고 마스터 브랜치에 변경 : 후

 /-E-F - branch 
A-B-C 
\ \-X - branch2 
    \-B*-C* - master 

을 브랜치 (Bend) "와 같은 방식으로 리베이스 (rebase) 및 편집을 시도했으며 다음과 같은 것을 얻었습니다.

/B**-C**-E-F - branch 
A-B-C 
\ \-X - branch2 
    \-B*-C* - master 

내 의도 s는 모든 지점에 대해 B를 편집하여 다음과 같이 표시했습니다.

 /-E-F - branch1 
A-B*-C - master 
     \-X - branch2 

어떻게 해결할 수 있습니까?

도움 주셔서 감사합니다.

답변

1

시작 그래프로 돌아가서 (reflog로 커밋 복구를 살펴보십시오) 마스터로 변경하고 (--no-ff 사용)을 병합하는 것이 더 쉬운 것처럼 보입니다. BRANCH1 및 브랜치 :

$ git checkout C 
# make modifications 
$ git commit 
$ git checkout branch1 
$ git merge --no-ff master 
$ git checkout branch2 
$ git merge --no-ff master 

     /-E-F-G - branch1 
    / /
A-B-C-----D - master 
    \  \ 
     \-X---Y - branch2 

그렇지 않으면 :

 /-E-F - branch1 
A-B-C - master 
    \-X - branch2 

$ git checkout B 
# make your modifications 
$ git commit 

    /-E-F - branch1 
A-B-C - master 
    \ \-X - branch2 
    \-B* 

$ git rebase --onto B* B branch1 

    /-E-F 
A-B-C - master 
    \ \-X - branch2 
    \-B*-C*-E*-F* - branch1 

$ git rebase --onto C* master branch2 

    /-E-F 
A-B-C - master 
    \ \-X 
    \-B*-C*-E*-F* - branch1 
      \-X* - branch2 

$ git checkout master 
$ git reset --hard C* 

    /-E-F 
A-B-C 
    \ \-X 
    \  /-E*-F* - branch1 
    \-B*-C* - master 
      \-X* - branch2