2016-06-12 3 views
0

나는 이미이 자식 repo "sub"인 dir을 가지고있다. 이제는 내가 새로 만든 슈퍼 디렉토리 "sup"의 서브 트리가되기를 바란다.git 하위 트리를 사용하여 로컬 저장소를 추가하는 방법?

필자는이 문서를 검색했지만 모든 자습서는 기존의 커밋에서 원격 저장소 또는 분할을 추가하는 것에 대한 것입니다. 존재하는 git repo를 주요 git repo에 어떻게 추가 할 수 있습니까?

git subtree add --prefix=sub sub을 사용하면 경고 하위가 이미 있습니다.

답변

1

기대하는 바에 따라이를 수행하는 방법에는 두 가지가 있습니다.

  1. 하위 모듈을 하위 모듈로 추가합니다. 레포지는 독립적으로 유지됩니다.
  2. 이 서브 페인의 하위 트리로 하위 repo를 추가하십시오. 그것의 역사는 합병된다

을 위해, 당신은 git submodule을 사용하고 싶다. 특히, (이미 자식 초기화로 초기화) 당신의 한모금 디렉토리에서

당신은 실행는 한모금의 repo에 하위의 repo를 복제 할 위치의 서브

자식 서브 모듈을 추가 할 수 있습니다. 하위 repo가 ​​다른 위치에 있으면 제거 할 수 있습니다.

하위 모듈은 여전히 ​​상단 저장소와 다른 저장소로 작동합니다.

https://git-scm.com/book/en/v2/Git-Tools-Submodules

가 2의 경우는 좀 더 복잡하다 :

은 하위 모듈에 대한 설명서를 참조하십시오.

먼저 당신은 다른 REPO의 커밋을 가져 오기 : # add remote git remote add sub # fetch commits git fetch # create local branch with sub git checkout -b sub_branch sub/master # switch to master git checkout master # now, merge commit as a subdirectory git read-tree --prefix=sub/ -u sub_branch 나중에 하위에서 끌어 유지할 수 있습니다, 그것은 한모금에 병합됩니다

--dmg

+0

'원격 하위 서브를 추가 이눔 '; 'git fetch sub'. 그런 다음 로컬 디렉토리 하위를 삭제해야합니다. 또한 자식 로그를 예약해야하는 경우 'git merge -s ours --no-commit'을 사용해야합니다. –

+0

미덕을 강조하는 많은 기사를 읽습니다. ** 하위 트리 **는 ** 하위 모듈 **을 가졌지 만 궁극적으로는 v1 서적에 설명 된 _convulated_ 패러다임을 채택하기 위해 많은 시간을 낭비했습니다. v2 책은 복잡성에 대한 모호한 언급을하지만 문제를 설명하지는 않습니다. 마스터 하위 트리에서 병합 된 변경 사항을 브랜치로 푸시하면 브랜치의 업스트림 저장소에 참조 된 항목을 포함하여 로컬 리포지토리의 모든 개체 *가 생깁니다 작성자 : _master_. – bvj