[git] submodule

2021. 12. 22. 19:39개발일지

1. submodule이란?

- git repo 아래 다른 repo를 두는 것.

2. submodule 추가하기

git submodule add <repository> [path]

3. submodule이 포함된 repo를 clone하기

git clone --recursive [path]

- 그냥 clone한 다음에 아래 명령어 하는 것과 동일함. (모든 서브 모듈 업데이트)

git submodule update --init --recursive

(예: git submodule update --init --recursive ./child_repo 와 같이 특정 레포 지정해서 업데이트 할 수도 있음)

- submodule은 하위에 포함하는 repo의 특정 커밋을 참조하는데, 그 커밋으로 업데이트 됨.

 

# 업데이트 방식은 --init과 --remote가 있다. (참고: https://pinedance.github.io/blog/2019/05/28/Git-Submodule)

# in main project root folder
git submodule update --remote --merge
 

 git submodule update --remote <REMOTE-REPO-NAME> --merge을 하면 특정 sub project만 update할 수 있다.

 git submodule update --init은 현재 main project에 link 되어 있는 subproject의 정보를 가져와 update하는 것이다. main project의 commit 당시의 snap shot을 내려받는 것이라고 할 수 있다. 따라서 subproject의 파일들을 clone해 오지만 git status를 해 보면 main project에는 변화가 없다. 반면 git submodule update --remote는 remote repo의 최신 정보를 가져다가 update하는 것이다. remote repo에 새로운 commit이 있는 경우 local main project에 새로운 sub project link가 연결되기 때문에 main project가 update 된다. 따라서 main project에 변화가 생길 수 있으며, main project를 새로 commit 해야 한다.

 --merge 옵션이 없으면, sub project는 다시 detached head 상태가 된다. 그러면 각각 git checkout master를 수행해 주어야 한다. ref

반응형

'개발일지' 카테고리의 다른 글

vscode tab 간격 설정  (0) 2021.12.31
cgi (common gateway interface)  (0) 2021.12.29
[linux] tmux 단축키 안 먹음  (0) 2021.12.23
[ElasticSearch] ElasticSearch DSL 더보기  (0) 2021.12.22
[ElasticSearch] ElasticSearch 개요  (0) 2021.12.22