질문자 :Mark
하위 모듈을 리포지토리에 넣으려고 합니다. 문제는 상위 리포지토리를 복제할 때 하위 모듈 폴더가 완전히 비어 있다는 것입니다.
git clone parent_repo
실제로 하위 모듈 폴더에 데이터를 넣도록 만드는 방법이 있습니까?
예를 들어, http://github.com/cwolves/sequelize/tree/master/lib/ , nodejs-mysql-native
는 외부 git 하위 모듈을 가리키고 있지만, sequelize
프로젝트를 체크아웃하면 해당 폴더가 비어 있습니다.
나중에 망할 놈의 버전 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
Git 버전 1.9에서 버전 2.12까지( -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
이미 복제된 저장소 또는 이전 Git 버전의 경우 다음을 사용하십시오.
git clone git://github.com/foo/bar.git cd bar git submodule update --init --recursive
Mathias Bynens하위 모듈이 채워지기 전에 두 가지 작업을 수행해야 합니다.
git submodule init git submodule update
LiraNunaGit 2.23(2019년 3분기): 하위 모듈을 최신 버전 으로 복제하고 업데이트하려는 경우:
git clone --recurse-submodules --remote-submodules
기록된 SHA1에서 복제하려는 경우:
git clone --recurse-submodules
아래를 참조하십시오.
Git 2.29(2020년 4분기)는 하위 모듈 처리와 관련하여 상당한 최적화를 제공합니다.
Orgad Shaneh( orgads
)의 commit a462bee (2020년 9월 6일)를 참조하십시오.
(2020년 9월 18일 2ce9d4e 커밋 에서 Junio C gitster
-- gitster -- 병합)
submodule
: 파일 이름 및 객체 ID에 대한 참조 모호성 검사를 억제합니다.
사인오프: Orgad Shaneh
collect_changed_submodules()
의 argv 인수에는 개체 ID(모든 참조의 개체 참조)만 포함됩니다.
assume_dashdash,
를 전달하여 입력이 파일 이름이 아님을 setup_revisions()
통지하여 각 참조에 대한 중복 통계를 방지할 수 있습니다.
또한 각 객체에 대한 파일 시스템 조회를 피하기 위해 refname_ambiguity
비슷한 논리는 cat-file, pack-objects 등에서 찾을 수 있습니다.
이 변경은 내 저장소의 git fetch
( man ) 시간을 25초에서 6초로 줄 입니다.
원래 답변 2010
joschi 가 주석에서 언급했듯이 git submodule
--recursive
옵션(Git1.6.5 이상)을 지원합니다.
--recursive
가 지정되면 이 명령은 등록된 하위 모듈로 재귀하여 그 안에 있는 모든 중첩된 하위 모듈을 업데이트합니다.
init 부분에 대해서는 재귀적으로 git 하위 모듈 작업을 참조하세요.
자세한 내용은 git submodule
대한 설명을 참조하세요.
–-recursive
옵션을 사용하여 수퍼 프로젝트를 복제하여 이 작업을 자동으로 수행할 수 있습니다.
git clone --recursive git://github.com/mysociety/whatdotheyknow.git
2016년 업데이트(git 2.8 포함): " git clone --recursive
사용하여 git 하위 모듈 다운로드 속도를 높이거나 병렬화하는 방법? "
병렬로 여러 스레드를 사용하여 하위 모듈 가져오기를 시작할 수 있습니다.
예를 들어:
git fetch --recurse-submodules -j2
더욱이 Git 2.23(2019년 3분기)을 사용하면 하나의 명령으로 하위 모듈을 추적 분기에 복제하고 체크아웃할 수 있습니다!
Ben Avison( bavison
)의 commit 4c69101 (2019년 5월 19일)을 참조하십시오.
(2019년 6월 17일 커밋 9476094 에서 Junio C gitster
-- gitster -- 병합)
clone
: --remote-submodules
플래그 추가
git clone --recurse-submodules
사용할 때 이전에는 하위 모듈을 원격 추적 분기에서 체크아웃하려는 사용 사례에 대해 암시적 git submodule update
--remote
스위치를 전달할 방법이 없었습니다. 슈퍼 프로젝트에 기록된 SHA-1.
이 패치는 이러한 상황을 수정합니다.
실제로 --no-fetch
를 git submodule update
에도 전달합니다. 하위 모듈이 방금 복제되었기 때문에 원격에서 다시 가져오면 속도가 느려질 뿐입니다.
그 의미는:
--[no-]remote-submodules:
복제된 모든 하위 모듈은 상위 프로젝트의 기록된 SHA-1 대신 하위 모듈의 원격 추적 분기 상태를 사용하여 하위 모듈을 업데이트합니다. --remote
를 git submodule update
로 전달하는 것과 같습니다.
VonC[빠른 답변]
이 명령을 사용하여 모든 하위 모듈과 함께 저장소를 복제할 수 있습니다.
git clone --recursive YOUR-GIT-REPO-URL
또는 이미 프로젝트를 복제한 경우 다음을 사용할 수 있습니다.
git submodule init git submodule update
Javier C.[빠른 답변]
상위 리포지토리(일부 하위 모듈 리포지토리 포함)를 복제한 후 다음을 수행합니다.
git submodule update --init --recursive
Benyamin Jafari하위 모듈이 분기에 추가된 경우 복제 명령에 포함해야 합니다...
git clone -b <branch_name> --recursive <remote> <directory>
Mars Redwyne이 시도:
git clone --recurse-submodules
상위 프로젝트에 하위 모듈을 이미 추가했다고 가정하면 자동으로 하위 모듈 데이터를 가져옵니다.
nweiler나는 당신이 3 단계로 갈 수 있다고 생각합니다.
git clone git submodule init git submodule update
muhammad ali e늦은 답변
// git CLONE INCLUDE-SUBMODULES ADDRESS DESTINATION-DIRECTORY git clone --recursive https://USERNAME@bitbucket.org/USERNAME/REPO.git DESTINATION_DIR
방금 친구와 만지작거리며 한 시간을 보냈을 때: BitBucket에 대한 관리자 권한이 있더라도 항상 ORIGINAL 저장소를 복제하고 저장소를 소유한 사람의 암호를 사용하십시오. 당신이 이 지뢰 덫에 걸렸다는 사실을 알게 되어 짜증이 납니다. :P
kaiser리포지토리를 복제할 때 --recursive
플래그를 사용할 수 있습니다. 이 매개변수는 git이 저장소에 정의된 모든 하위 모듈을 복제하도록 합니다.
git clone --recursive git@repo.org:your_repo.git
복제 후 하위 모듈 분기가 변경될 수 있으므로 다음 명령을 실행합니다.
git submodule foreach "git checkout master"
Ahmad Azimigit 저장소에 하위 모듈을 포함하려면 이것을 시도하십시오.
git clone -b <branch_name> --recursive <remote> <directory>
또는
git clone --recurse-submodules
radhey shyam이 명령을 사용하여 모든 하위 모듈과 함께 repo를 복제하십시오.
git clone --recurse-submodules git@gitlab.staging-host.com:yourproject
모든 하위 모듈에 대한 코드를 업데이트하려면
git submodule update --recursive --remote
Antier Solutions하위 모듈 병렬 가져오기는 한 번에 여러 저장소를 가져올 수 있도록 하여 저장소 및 모든 관련 하위 모듈을 가져오는 데 필요한 시간을 줄이는 것을 목표로 합니다. 이것은 새로운 --jobs 옵션을 사용하여 수행할 수 있습니다. 예:
git fetch --recurse-submodules --jobs=4
Git 팀에 따르면 많은 하위 모듈이 포함된 리포지토리 업데이트 속도를 크게 높일 수 있습니다. 새로운 --jobs 옵션 없이 --recurse-submodules를 사용하면 Git은 하위 모듈을 하나씩 가져옵니다.
출처: http://www.infoq.com/news/2016/03/git28-released
Long NguyenGitHub 리포지토리에 대해 동일한 문제가 있었습니다. 내 계정에 SSH 키가 없습니다. 과정은
- SSH 키 생성
- GitHub 계정에 새 SSH 키 추가
git clone --recursive YOUR-GIT-REPO-URL
)을 사용하여 저장소를 복제할 수 있습니다.
또는
git submodule init
및 git submodule update
를 실행하여 이미 복제된 저장소에서 하위 모듈을 가져옵니다.
FatalError새 프로젝트인 경우 간단히 다음과 같이 할 수 있습니다.
$ git clone --recurse-submodules https://github.com/chaconinc/YourProjectName
다음보다 이미 설치된 경우:
$ cd YourProjectName (for the cases you are not at right directory) $ git submodule init $ git submodule update
nzrytmn이 시도.
git clone -b <branch_name> --recursive <remote> <directory>
분기에 하위 모듈을 추가한 경우 복제 명령에 추가해야 합니다.
Himeshika96프로젝트 디렉토리에서 이 작업을 수행하기만 하면 됩니다.
$ git submodule init $ git submodule update
Rajitha Udayanga
git submodule foreach git pull origin master
Tappas출처 : http:www.stackoverflow.com/questions/3796927/how-to-git-clone-including-submodules