2010-11-23 4 views
2

우리는 git로 "스파게티"를 약간 병합 한 것처럼 보입니다. alt text스파게티를 병합하려면 어떻게해야합니까?

우리는이 새로운이며, 기본적으로 다음과 같은 지점

Master A - B - C 
      __// 
Core  / A - B - C - D - E - F 
      | 
iPhone A - B - C 

을하고 싶습니다 그러나 어느 시점에서 우리가 핵심으로 마스터 병합처럼 다시 마스터의 핵심, 다음에 다시 마스터 한 후, 보인다 코어 .. 어떤/어떻게/왜 이런 일이 있었는지 모르겠다.하지만 나는 너무 많이 어지럽히 지 않고 궤도에 되돌려 놓는 데 도움이 될 것이다!

도움을 주시면 감사하겠습니다.

+0

마스터에 대한 ABC는 코어에 대한 ABCDEF와 약간 관련이 있으며, 그 중 하나가 iPhone에서 ABC와 조상으로 관련이 있는지 여부는 분명하지 않습니다. 코어 커밋의 이름을 바꾸어야합니다. HIJKLM과 iPhone이 TUV를 저지합니다. 또한, Master/C에서 Core/A로가는 슬래시가 수수께끼 같아요. 의도적 인 후진 동작입니까? iPhone 브랜치에 실제로 문제가 있습니까? 실제로 Master/A와 Core/A와 iPhone/A가 똑같은 커밋을 원한다면/B는 어떨까요? 그리고 원하는 십여 개 커밋은 표시된 23 개 커밋과 어떤 관련이 있습니까? –

+0

그래서 우리는 3 개의 브랜치를 사용하기를 원했습니다. 우리가 아이폰 개발을 저장하는 아이폰 지점, 그리고 우리가 애플 리케이션의 핵심을 저장하는 광고 코어 지점. 코드를 공개 할 준비가되면 언제든지 마스터에서 새 버전을 가져 오기 위해 두 분기를 마스터와 병합합니다. 어쩌면 그렇게하는 것이 이해가되지 않을 것이다. 나는 단지 자식을 배운다. ! 도와 주셔서 감사합니다. – Martin

답변

1

"Core"브랜치를 선형화하고 싶습니까? 왜 그냥 git rebase 아니야?

Master A - B - C 
      __// 
Core  / D - E - F - G - H - I 
      | 
iPhone J - K - L 


git checkout core 
git rebase C [where "C" is the sha1 of C] 

충돌이 있으면 git rebase --abort으로 이전 상태로 돌아갑니다.

+0

아! 나는 rebase에 대해 들어 본 적이 없다. 이것을 들여다 볼 것입니다. – Martin

+0

github에 푸시 할 때'--force'를 추가해야 할 수도 있습니다. 역사를 다시 쓰려면 그게 필요합니다. –

+0

그리고'push -f'에 대해서 이야기하고 있으므로, git-rebase man 페이지의 "upstream rebase에서 복구하기"섹션을 읽고 반드시 복구를 위해 다른 사람들이해야 할 일을 이해하십시오. – Cascabel

관련 문제