Git Submodule 사용하기

프로젝트 규모가 커지다보니 git에 하위 프로젝트를 별도로 관리할 일이 생겼다.
이럴 때 유용한 것이 git의 서브모듈(submodule) 기능이다.

git 서브모듈은 git 저장소 내에 다른 git 저장소를 저장하여 하위 프로젝트 저장소를 실현한다.
이 경우 git 저장소는 상위 git과 하위 git의 두 부분으로 분리운영되며 별도로 git command를 적용할 수 있게 된다. [Docs]
다만 다루는 방법이 조금 특이하다.

Submodule 생성

서브모듈을 만들기 위해서는 아래처럼 하위 git 저장소의 URL과 submodule 커맨드를 사용해야 한다.

$ git submodule add -b master <GIT_URL> <DIRECTORY_NAME>

위의 커맨드를 통해 GIT_URL로부터 git 저장소를 내려받아 DIRECTORY_NAME에 저장할 수 있게 된다.

Submodule 제거

서브모듈의 제거는 단순히 서브모듈 디렉터리를 지우는 것만으로는 해결되지 않는다.
서브모듈의 정보는 .git/config와 .gitmodules, .git/module/에 기록되는데 이 또한 함께 지워주어야 한다.
다음은 이를 위한 커맨드이다.

$ git submodule deinit -f <DIRECTORY_NAME> # .git/config로부터 서브모듈 제거
$ rm -rf .git/modules/<DIRECTORY_NAME> # .git/modules에서 모듈 직접 제거
$ git rm -f <DIRECTORY_NAME> # git으로부터 서브모듈 관련 내용 모두 제거

크게 어렵지는 않은데 다소 귀찮다.

댓글 남기기