Git의 하위 모듈로 원격 리포지토리 복제

Kevin Amayi 2024년2월15일
  1. Git의 하위 모듈로 원격 리포지토리 복제
  2. Git에서 복제하기 전에 하위 모듈을 만들고 원격 리포지토리로 푸시
Git의 하위 모듈로 원격 리포지토리 복제

이 기사에서는 하위 모듈을 사용하여 원격 Git 리포지토리를 복제하는 방법에 대해 설명합니다. 또한 서브모듈을 생성하여 복제하기 전에 원격 저장소에 푸시합니다.

Git의 하위 모듈로 원격 리포지토리 복제

다음 명령을 사용하여 하위 모듈과 함께 저장소를 복제합니다.

git clone --recurse-submodules -j8 git@github.com:KEVINAMAYI/AkanNameGenerator.git

출력:

Cloning into 'AkanNameGenerator'...
remote: Enumerating objects: 108, done.
remote: Counting objects: 100% (14/14), done.
remote: Compressing objects: 100% (11/11), done.
remote: Total 108 (delta 4), reused 3 (delta 1), pack-reused 94
Receiving objects: 100% (108/108), 2.38 MiB | 1.86 MiB/s, done.
Resolving deltas: 100% (29/29), done.
Submodule 'testfolder' (git@github.com:KEVINAMAYI/AkanNameGenerator.git) registered for path 'testfolder'
Cloning into '/home/kevin/tqt/AkanNameGenerator/testfolder'...
remote: Enumerating objects: 108, done.
remote: Counting objects: 100% (14/14), done.
remote: Compressing objects: 100% (11/11), done.
remote: Total 108 (delta 4), reused 3 (delta 1), pack-reused 94
Receiving objects: 100% (108/108), 2.38 MiB | 1.55 MiB/s, done.
Resolving deltas: 100% (29/29), done.
Submodule path 'testfolder': checked out '3300a2aa47ef2c490c19541c6907117511eabe08'

Git에서 복제하기 전에 하위 모듈을 만들고 원격 리포지토리로 푸시

리포지토리를 복제하기 전에 먼저 testfolder라는 이름의 하위 모듈을 이미 존재하는 로컬 리포지토리에 추가한 다음 변경 사항을 원격 리포지토리에 푸시합니다.

<!-- this commands intializes a submodule with the contents of a remote repo-->
git submodule add <your remote repo url> <name of submodule>

git submodule add git@github.com:KEVINAMAYI/AkanNameGenerator.git testfolder

출력:

Cloning into '/home/kevin/tst/AkanNameGenerator/testfolder'...
remote: Enumerating objects: 105, done.
remote: Counting objects: 100% (11/11), done.
remote: Compressing objects: 100% (9/9), done.
remote: Total 105 (delta 3), reused 0 (delta 0), pack-reused 94
Receiving objects: 100% (105/105), 2.38 MiB | 2.06 MiB/s, done.
Resolving deltas: 100% (28/28), done.

다음으로 새 파일을 확인합니다. 목록에 추가 testfolder가 표시되어야 합니다.

ls

출력:

css  images  index.html  js  LICENSE  README.md  testfolder  vendor

그런 다음 방금 변경한 내용을 커밋합니다.

git commit -m "Added the submodule to the project."

출력:

"Added the submodule to the project."
[main 500a12a] Added the submodule to the project.
2 files changed, 4 insertions(+)
create mode 100644 .gitmodules
create mode 160000 testfolder

이 명령을 사용하여 변경 사항을 원격 저장소로 푸시합니다.

git push

출력:

Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 4 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 429 bytes | 429.00 KiB/s, done.
Total 3 (delta 1), reused 0 (delta 0)
remote: Resolving deltas: 100% (1/1), completed with 1 local object.
To github.com:KEVINAMAYI/AkanNameGenerator.git
3300a2a..500a12a  main -> main

이제 원격 저장소에 testfolder 하위 모듈이 있습니다.

하위 모듈로 리포지토리 복제

우리는 하위 모듈과 함께 저장소를 복제합니다.

git clone --recurse-submodules -j8 git@github.com:KEVINAMAYI/AkanNameGenerator.git 

출력:

Cloning into 'AkanNameGenerator'...
remote: Enumerating objects: 108, done.
remote: Counting objects: 100% (14/14), done.
remote: Compressing objects: 100% (11/11), done.
remote: Total 108 (delta 4), reused 3 (delta 1), pack-reused 94
Receiving objects: 100% (108/108), 2.38 MiB | 1.86 MiB/s, done.
Resolving deltas: 100% (29/29), done.
Submodule 'testfolder' (git@github.com:KEVINAMAYI/AkanNameGenerator.git) registered for path 'testfolder'
Cloning into '/home/kevin/tqt/AkanNameGenerator/testfolder'...
remote: Enumerating objects: 108, done.        
remote: Counting objects: 100% (14/14), done.        
remote: Compressing objects: 100% (11/11), done.        
remote: Total 108 (delta 4), reused 3 (delta 1), pack-reused 94        
Receiving objects: 100% (108/108), 2.38 MiB | 1.55 MiB/s, done.
Resolving deltas: 100% (29/29), done.
Submodule path 'testfolder': checked out '3300a2aa47ef2c490c19541c6907117511eabe08'

관련 문장 - Git Clone