2011-02-08 7 views
1

나는 내에서 원격 저장소에서 최신 (21 개) 커밋을 추가 할git rebase --onto가 충돌을 일으킴 - 왜?

git rebase --onto master myremote/master~21 myremote/master 

을 시도하고있다.

내게 알려주는 것은 충돌이 있다는 것입니다.하지만 어떻게 가능합니까?

제 생각에 21 개 커밋을 마스터에 적용하는 것입니다. 어떻게 갈등이있을 수 있습니까?

도움 주셔서 감사합니다.

어떻게 든 내가 git-svn 저장소 (원격)를 엉망으로 만들었 기 때문에 btw를 수행하고 있으며, 전복에 전념 할 수없는 커밋이 21 개 있습니다. 그래서 나는 그 21 커밋을 추가하는 신선한 자식 - svn 클론과 함께 노력하고있어.

답변

0

경우 충돌이 :

  • 마스터가 myremote/master에없는 커밋이있다.
  • 이러한 커밋에는 공통 파일/변경 사항이 포함되어 있으며 마지막으로 하나는 myremote/master 커밋입니다. 어떻게 든 신선한 git-svn clone 이전 자식 - svn을 REPO 다른 SHA1이있는 경우

후 더 가까운 공통 조상이없고, 충돌의 가능성이 훨씬 높은 것을입니다.
리베이스 중 충돌에 대한 설명은 "How to identify conflicting commits by hash during git rebase?"을 참조하십시오.

git checkout -b tmp myremote/master # local tmp branch from myremote/master HEAD. 
git merge -s ours master    # ignore completely master content 
git checkout master 
git merge tmp      # fast-forward to tmp HEAD 

당신이 myremote/master를 가져 오는하기 전에 해당 지역의 master의 변경을하지 않았다면,이 작업을해야합니다 myremote 해당 지역의 마스터를 재설정


한 가지 방법은/마스터하는 것입니다.

+0

나는 이해할 수 없다. 왜 선생님의 커밋은 어떨까요? 리베이스 (rebase)는 현재 브랜치 (여기서 myremote/master)를 (여기서는 마스터)으로 재설정하는 것입니다. 그래서 모든 것이 단지 마스터 맨 위에 적용되어야합니다. 맞습니까? – Andy

+0

다른 말로하면 공통 조상과 헛소리를 확인하지 않고 간단히 21 커밋을 적용 할 수있는 방법이 없습니까? – Andy

+0

@Andy : 리베이스 중 충돌에 대해서는 http://stackoverflow.com/questions/2118364/how-to-identify-conflicting-commits-by-hash-during-git-rebase를 참조하십시오. 귀하의 경우 질문 :'마스터/헤드 '(어떤 rebase 이전)에 대한 SHA1은'myremote/master ~ 22'와 동일합니까? 그렇지 않다면, 공통 조상은 '마스터'의 역사에 더 가깝다. – VonC

관련 문제