본문 바로가기
은근필요한이것저것

[Git] Submodule

by 궝테스트 2020. 6. 28.

Submodule 추가

git submodule add {submodule remote url}
ex) git submodule add git@github.com:XXXX/OOOOOO.git

git submodule add -b {branch name} {submodule remote url}
ex) git submodule add -b master git@github.com:XXXX/OOOOOO.git

 submodule 을 추가하고 나서 git status 로 살펴보면
새로운 파일인 '.gitmodules' 과 'submodule' 이름의 디렉토리가 생겼을거다.

// .gitmodules
[submodule "OOOOOO"]
    path = OOOOOO
    url = git@github.com:XXXX/OOOOOO.git
    branch = master

submodule 수만큼 위 [submodule "OOOOO"] 항목이 추가되고,
branch 정보는 submodule 생성 시 '-b master' 옵션을 넣었을 경우 추가된다.


Submodule 을 갖고 있는 프로젝트를 Clone 하는 경우

만약 해당 프로젝트를 그냥 Clone 하면 submodule 디렉토리는 비어있는채로 Clone 된다.

1. 이미 프로젝트를 Clone 한 경우

git submodule init
: submodule 로컬 환경설정 파일 준비

git submodule update
: submodule remote repository 에서 checkout

2. 프로젝트 Clone 부터 해야하는 경우

git clone --recurse-submodules {프로젝트 remote url}
ex) git clone --recurse-submodules git@github.com:XXXX/OOOOOO.git


Submodule 최신 버전 업데이트

git submodule update --remote
: .gitmodules 에 있는 모든 submodule 의 remote master 를 checkout 한다.
: 다른 brnch 로 바꾸고 싶으면 .gitmodules 에서 branch 정보를 변경하거나, 아래와 같이 실행하면 된다.

git config submodule.{submodule명}.branch {branch명}
: config 다음에 '-f .gitmodules' 옵션을 넣으면 레파지토리를 공유하는 다른 사용자도 적용된다.


Submodule 제거

git submodule deinit -f {submodule명}
: 해당 submodule 을 deinit 한다.

rm -rf .git/modules/{submodule명}
: ./git/modules 에서 해당 submodule 을 제거한다.

git rm -f {submodule명}
: git 에서 해당 submodule 을 제거한다.

'은근필요한이것저것' 카테고리의 다른 글

Firebase Analytics  (0) 2020.09.10
[Git] Commit 취소/삭제  (0) 2020.06.28
[Git] 처음 배울 때!  (0) 2020.03.24
Opacity 수치  (0) 2020.03.13
Material Design  (0) 2020.03.12

댓글