Submodule
은git
저장소 안에 다른git
저장소를 분리해서 넣는 것이다.
- A 프로젝트에서 쓰던 코드를 B 프로젝트에서도 사용해야 할 경우에 사용
- 저장소라 하위에
.git
파일이 있음을 알 수 있다.
$ git submodule add [서브모듈 url]
$ git submodule add https:github.com/username/subrepo.git
서브모듈이 추가되면, 서브모듈 이외에
.gitmodules
라는 파일도 새롭게 생성되었다.
.gitmodules
파일은 서브 저장소와 하위 프로젝트 url의 매핑 정보를 담는다.
모든
submodule
을clone
해주는 옵션이다.
$ git clone --recursive {주소}
$ git clone --recursive https://github.com/username/repo.git
일반적으로
clone
한 후submodule
을 업데이트하는 방법
main project
에 연결되어 있는subrepo
의 정보를 가져와서 업데이트 한다.
$ git submodule update --init --recursive
특정
submodule
을 지정해서 업데이트 할 수도 있다.
- 모든
submodule
을 다 가져와서 업데이트할 필요가 없기 때문이다.
$ git submodule update --init --recursive ./newsubrepo
--remote
는remote repo
의 최신 정보를 가져와서update
하는 것이다.
remote repo
에 새로운commit
이 있는 경우local main project
에 새로운sub project link
가 연결되기 때문에main project
가update
된다. 따라서main project
에 변화가 생길 수 있으며,main project
를 새로commit
해야 한다
$ git submodule update --remote {remote repo} --merge