2011-05-09 2 views
2

각기 다른 버전의 동일한 코드베이스를 포함하는 두 개의 자식 저장소가 있습니다. 리포 1두 개의 자식 저장소를 병합하여 모든 커밋 내역 유지

커밋 (마지막으로 가장 최근의) : 리포 2

version 1 
version 2 
version 3 
version 4 
version 5 

커밋 : 리포 1, 버전 5는 버전 4를 기반으로한다는

version 3 
commit that isn't a new version 
another commit that isn't a new version 
yet another commit that isn't a new version 
version 5 

주, 리포뿐만 2 버전 4는 존재하지 않습니다. 버전 5는 실제로 버전 3을 기반으로했기 때문에 (그리고 버전 4는 본질적으로 버려진 분기가되었습니다).

나는 하나 개의 repo에이 모든 것을 넣고 싶습니다 누군가가이 작업을 수행하는 방법뿐만 아니라 설명 할 수 있다면

version 1 
version 2 
version 3 
    branch version 4 
commit that isn't a new version 
another commit that isn't a new version 
yet another commit that isn't a new version 
version 5 

내가 감사하겠습니다하지만 정확한 이유그것을 할 그런 식으로, 나는 자식에 대해 더 잘 이해할 수있다.

답변

1

git rebase --preserve-merges --onto을 살펴보십시오. 두 번째 저장소의 커밋을 첫 번째 저장소로 가져온 후에는 원하는 조상을 가지도록 내역의 일부를 이동할 수 있습니다.

희망이 도움이됩니다.

편집 :

가, 두 번째 REPO에서 변화를 얻을 원격으로 추가하려면 :

git remote add secondary <url to your secondary repo> 

는 그런 다음 거기에서 가져올 수 :

git fetch secondary 

지금 당신이 검사 할 수 있습니다 gitk --all 또는 git log --all --graph --decorate --oneline을 입력하고 rebase --onto으로 원하는 것을 선택하십시오.

+0

아마도 두 번째 repo에서 첫 번째 repo로 커밋을 가져 오는 방법을 포함해야합니다. 그것은이 대단한 대답이 될 것입니다. – ebneter

+0

완료. 정보가 충분하기를 바랍니다. –

관련 문제