728x90
반응형
질문 : 두 개의 Git 저장소를 어떻게 병합합니까?
다음 시나리오를 고려하십시오.
자체 Git 저장소에서 작은 실험 프로젝트 A를 개발했습니다. 이제 성숙 해졌고, A가 자체적으로 큰 저장소가있는 더 큰 프로젝트 B의 일부가되기를 바랍니다. 이제 A를 B의 하위 디렉토리로 추가하고 싶습니다.
어떤면에서 기록을 잃지 않고 A를 B로 병합하려면 어떻게해야합니까?
답변
다른 저장소의 단일 분기는 기록을 유지하는 하위 디렉토리 아래에 쉽게 배치 할 수 있습니다. 예를 들면 :
git subtree add --prefix=rails git://github.com/rails/rails.git master
이것은 Rails 마스터 브랜치의 모든 파일이 "rails"디렉토리에 추가되는 단일 커밋으로 나타납니다. 그러나 커밋의 제목에는 이전 히스토리 트리에 대한 참조가 포함됩니다.
<rev>
에서 'rails /'추가
여기서 <rev>
는 SHA-1 커밋 해시입니다. 여전히 역사를 볼 수 있으며 일부 변경 사항을 비난 할 수 있습니다.
git log <rev>
git blame <rev> -- README.md
이것은 실제 오래된 브랜치가 그대로 남아 있기 때문에 여기에서 디렉토리 접두사를 볼 수 없습니다. 이것을 일반적인 파일 이동 커밋처럼 취급해야합니다 : 도달 할 때 추가 점프가 필요합니다.
# finishes with all files added at once commit
git log rails/README.md
# then continue from original tree
git log <rev> -- README.md
이 작업을 수동으로 수행하거나 다른 답변에서 설명한대로 기록을 다시 작성하는 것과 같은 더 복잡한 솔루션이 있습니다.
git-subtree 명령은 공식 git-contrib의 일부이며 일부 패킷 관리자는 기본적으로 설치합니다 (OS X Homebrew). 그러나 git 외에 직접 설치해야 할 수도 있습니다.
출처 : https://stackoverflow.com/questions/1425892/how-do-you-merge-two-git-repositories
728x90
반응형
'개발관련 > Git' 카테고리의 다른 글
Git에서 이전 (마지막이 아님) 커밋에 변경된 파일을 추가하는 방법 (0) | 2021.07.19 |
---|---|
Git에서 파일 이름 변경 처리 (0) | 2021.07.19 |
Git에서 원격으로 브랜치 이름 바꾸기 (0) | 2021.07.15 |
Git과 Dropbox를 함께 사용하는 방법 (0) | 2021.07.14 |
현재 Git 작업 트리에서 로컬 (추적되지 않은) 파일을 제거하는 방법 (0) | 2021.07.14 |