2010-12-21 6 views
29

기본 저장소 인 A 저장소가 있고 주 프로젝트의 하위 디렉터리에있는 다른 저장소 저장소 B에서 원본 저장소를 사용하고 있습니다. 이제 B 저장소를이 사용 된 서브 디렉토리의 A 저장소에서 체크 아웃하는 것이 좋을 것입니다. 누군가 다른 사람이 리포지토리를 복제하면 그는 우리의 메인 리포지토리 A를 가져와 자동으로 B 리포지토리를 가져와야합니다.Git 저장소 내의 Git 저장소

나 디렉토리 구조 시각화하자 다른 사람이 체크 아웃하기 때문에,

 
+ main_repository  - the root directory of the main Repository 
    + src     - directory containing the source 
    + foreignRepo  - this should be the root directory of another git repo 
    + binaries 
    + other 

이 또한 원격 저장소에 알고 있어야합니다, 그냥 로컬 복사본이 나에게 도움이되지 않습니다을하고 할 수 있어야합니다 모든 것을 컴파일해라.

+4

필요에 따라 Git 하위 모듈을 확인해야합니다. http://book.git-scm.com/5_submodules.html –

+1

업데이트 된 링크 : http://schacon.github.io/gitbook/5_submodules.html – twasbrillig

+0

블로그 포스트는 각 접근 방식의 장단점을 설명합니다. [Git Submodule : Git Subtree] (http://blogs.atlassian.com/2013/05/alternatives-to-git-submodule-git-subtree/). –

답변

22

Git submodules을 읽는 것이 좋습니다.

+1

또는 Pro Git 서적 : http://progit.org/book/ch6-6.html – bdukes

5

서브 모듈을 사용하지 않고 두 개의 자식 리포를 중첩 할 수 있습니다. ChildRepo가 ParentRepo의 서브 디렉토리이고, 둘 다 git 저장소라고 가정하십시오.

+ ParentRepo 
    - ChildRepo 

ChildRepo에 파일을 추가하면 ParentRepo가 파일을 무시합니다. 커밋하면 ChildRepo에 추가됩니다. ChildRepo 내에 ParentRepo에 파일을 추가 할 수 없습니다.

상세 정보 : Nested GIT repo gotchas!

+0

방금 ​​부모 저장소에서 하위 저장소를 중첩하려했습니다. 내가 child repo에 파일을 추가했을 때 나는'cd ../'와'git status'를했고 부모 repo는 새로운 파일을 무시하지 않았다. – chharvey

5

사용 git subtree 1.7.11 자식 버전 이상. git subtree is superior to git submodule 이유 :

  • 간단한 워크 플로우 관리가 쉽습니다. 자식의 이전 버전 는
  • 하위 프로젝트의 코드가 슈퍼 프로젝트의 클론 저장소의 사용자가 새로운 것을 배울 필요가 없습니다
  • git subtree를 완료 한 후 바로 사용할 수있다 (심지어 v1.5.2 전) 지원 그들은 git submodule이 하위 트리의
  • 내용이 수정 될 수있다 (예 : .gitmodule 으로)하는 것처럼
  • git subtree는 별도의 저장소 사본을하지 않고 새로운 메타 데이터 파일을 추가하지 않습니다 당신이 의존성
  • 을 관리하는 서브 트리를 사용하고있는 사실을 무시할 수 있습니다 종속 어딘가에

또한 detach a subtree of your existing repository into a new repository이 필요하면 git subtree split이 도움이 될 수 있습니다.

+0

이 답변의 원래 게시 위치 : http://blogs.atlassian.com/2013/05/alternatives-to-git-submodule-git-subtree/ –