2017-03-07 1 views
0

다른 프로젝트 B을 사용하는 A 프로젝트가 있습니다.git - 다른 프로젝트 포함

그 결과로 A의 자식 저장소에 B이 복제 된 하위 폴더가 있습니다.

이제 폴더를 A's repo로 동기화하는 가장 간단한 방법은 해당 폴더와 그 안에있는 모든 항목을 A's 색인에 추가하고 완료하는 것입니다.

그런 중첩 된 자식 구조에 대한 경험이 없기 때문에, 나는 그렇게하는 것이 현명한 방법인지 궁금해합니다. 내가 그런 식으로하고 어떤 대안을 강요합니까?

+1

에서 찾을 수있다 서브 모듈과 비교를 포함하여이 방법에 대한

더는 두 가지 옵션이 있습니다 :-) submodu 작동 레와 서브 트리 병합. 하위 트리 병합은 유지하기가 쉽기 때문에 병합하는 것이 좋습니다. 정상적인 방법으로 각 저장소를 생성하면됩니다. "수집가"저장소에서 "수집기"디렉토리의 디렉토리에있는 다른 저장소를 병합 할 수 있습니다. 명령을 넣어주고 싶다면 답을 추가 할 것입니다. – Teocci

+1

서브 트리가 서브 모듈보다 유지 관리가 더 쉽다는 것은 논쟁의 여지가 있습니다. 일반적으로 저장소 B가 자주 변경되면 하위 트리로 사용해야합니다. 상대적으로 안정적인 단계에 있으면 서브 모듈로 사용해야합니다. 하위 모듈을 사용할시기에 대한 좋은 기사는 [여기] (https://medium.com/@porteneuve/mastering-git-submodules-34c65e940407#.lhi1isank)에서 찾을 수 있으며 하위 트리의 각 기사는 [여기] (https : //medium.com/@porteneuve/mastering-git-subtrees-943d29a798ec#.d5zzxh5kv). – kowsky

+0

@Teocci는 대답에 대해 자세히 설명합니다. – User1291

답변

2

프로젝트가 자주 변경 될 때 @kowsky가 언급 한대로 유지 관리가 더 쉽기 때문에 subtree merging을 권하고 싶습니다.

일반적인 방법으로 각 저장소를 만들어야합니다. "수집가"저장소에서 다른 저장소를 "수집기"디렉토리의 하위 디렉토리로 병합 할 수 있습니다. 단지 이러한 명령을 실행하는 것이 수행합니다

$ git remote add -f AnotherRepo /path/to/that/repo 
$ git merge -s ours --no-commit AnotherRepo/master 
$ git read-tree --prefix=AnyDirectoryToPutItIn/ -u AnotherRepo/master 
$ git commit -m "Merge AnotherRepo project as subdirectory"` 

을 그리고, 하위 트리 병합 전략을 사용하여 "컬렉터"저장소에 AnotherRepo를 끌어 (또는를 업데이트) :

$ git pull -s subtree AnotherRepo master 

이를 그것을 할 수있는 일반적인 방법이며,이 자식 Git-Tools-Subtree-Merging