[git] 서브 모듈을 포함한“git clone”방법

하위 모듈을 리포지토리에 넣으려고합니다. 문제는 부모 저장소를 복제 할 때 하위 모듈 폴더가 완전히 비어 있다는 것입니다.

git clone parent_repo실제로 하위 모듈 폴더에 데이터를 넣을 수있는 방법이 있습니까?

예를 들어, http://github.com/cwolves/sequelize/tree/master/lib/는 , nodejs-mysql-native외부 자식 서브 모듈 가리키고,하지만 난 체크 아웃 할 때 sequelize프로젝트를 해당 폴더가 비어 있습니다.



답변

Git 버전 2.13 이상 --recurse-submodules에서는 --recursive다음 대신 사용할 수 있습니다 .

git clone --recurse-submodules -j8 git://github.com/foo/bar.git
cd bar

편집자 주 : -j8버전 2.8에서 사용할 수있는 선택적 성능 최적화 옵션이며 한 번에 최대 8 개의 하위 모듈을 병렬로 가져옵니다 man git-clone.

버전 2.12까지 Git 버전 1.9 -j사용 (버전 2.8 이상에서만 사용 가능한 플래그) :

git clone --recursive -j8 git://github.com/foo/bar.git
cd bar

Git 버전 1.6.5 이상에서는 다음을 사용할 수 있습니다.

git clone --recursive git://github.com/foo/bar.git
cd bar

이미 복제 된 repos 또는 이전 Git 버전의 경우 다음을 사용하십시오.

git clone git://github.com/foo/bar.git
cd bar
git submodule update --init --recursive


답변

서브 모듈이 채워지기 전에 두 가지를해야합니다 :

git submodule init
git submodule update


답변

Git 2.23 (2019 년 3 분기) : 서브 모듈을 복제 하고 최신 버전으로 업데이트 하려는 경우 :

git clone --recurse-submodules --remote-submodules

기록 된 SHA1에서 복제하려는 경우 :

git clone --recurse-submodules

아래를 참조하십시오.


원문 답변 2010

코멘트에서 joschi가 언급 했듯이 git submodule이제 --recursive옵션 (Git1.6.5 이상)을 지원합니다 .

경우 --recursive지정,이 명령은 등록 된 서브 모듈로 재귀 적 및 내에서 중첩 된 서브 모듈을 업데이트합니다.

초기화 부분에 대해서는 git 서브 모듈을 재귀 적으로 작업하기를 참조하십시오 .
자세한 내용은 git submodule설명 을 참조하십시오 .

git 버전 1.6.5 이상에서는 다음 –-recursive옵션을 사용하여 수퍼 프로젝트를 복제하여 자동으로 수행 할 수 있습니다 .

git clone --recursive git://github.com/mysociety/whatdotheyknow.git

자식 2.8 2016 업데이트 : 참조 ” 자식 서브 모듈이 사용 / PARALLELIZE 다운로드 속도를 어떻게 git clone --recursive?

여러 스레드를 병렬로 사용하여 서브 모듈 가져 오기를 시작할 수 있습니다.
예를 들어:

git fetch --recurse-submodules -j2

Git 2.23 (Q3 2019)을 사용하면 하나의 명령으로 서브 모듈을 추적 분기에 복제하고 체크 아웃 할 수 있습니다!

Ben Avison ( )의 commit 4c69101 (2019 년 5 월 19 일)을 참조하십시오 . ( Junio ​​C Hamano의해 병합 커밋 9476094 , 2019 년 6 월 17 일)bavison
gitster

clone: --remote-submodules플래그 추가

사용하는 경우 git clone --recurse-submodules패스 할 수있는 방법 이전에 없었다 --remote암시로 전환 git submodule update하면 서브 모듈 오히려 SHA-1 superproject에 기록보다 자신의 원격 추적 분기에 체크 아웃하고자하는 모든 사용 사례에 대한 명령.

이 패치는이 상황을 수정합니다.
실제로 통과 --no-fetchgit submodule update잘 그들이 서브 모듈은 단지 복제 된 근거로, 원격 다시 단지에서 가져 오는 있도록 아래로 천천히 일을 제공합니다.

그 의미는:

--[no-]remote-submodules:

복제 된 모든 하위 모듈은 수퍼 프로젝트의 기록 된 SHA-1이 아니라 하위 모듈의 원격 추적 분기 상태를 사용하여 하위 모듈을 업데이트합니다. 로 전달하는 --remote것과 같습니다 git submodule update.


답변

[빠른 답변]

이 명령을 사용하여 모든 하위 모듈과 함께 repo를 복제 할 수 있습니다.

git clone --recursive YOUR-GIT-REPO-URL

또는 이미 프로젝트를 복제 한 경우 다음을 사용할 수 있습니다.

git submodule init
git submodule update


답변

하위 모듈이 분기에 추가 된 경우 복제 명령에 하위 모듈을 포함시켜야합니다.

git clone -b <branch_name> --recursive <remote> <directory>


답변

이 시도:

git clone --recurse-submodules

이미 서브 모듈을 상위 프로젝트에 추가했다고 가정하면 서브 모듈 데이터를 자동으로 가져옵니다.


답변

나는 당신이 3 단계로 갈 수 있다고 생각합니다 :

git clone
git submodule init
git submodule update