Skip to content

Git Submodules

Git 프로젝트 파일에서 별도의 Git 리포지토리의 파일을 연결하여 불러올 수 있다. 이렇게 하면 기존의 프로젝트의 Git 파일에 추가되지 않고, 모듈처럼 설치되어 관리할 수 있다.

서브모듈 초기화

shell
$ git submodule add [Repository URL] [Path]

예를 들어 TIL 리포지토리 파일을 AAA 프로젝트 경로 루트의 /til 폴더로 불러오려면, 아래와 같이 사용한다.

shell
$ git submodule add [email protected]:jooy2/TIL.git til

이 때 프로젝트 루트에 .gitmodules 파일이 만들어지는 것을 확인한다.

text
[submodule "til"]
	path = til
	url = [email protected]:jooy2/TIL.git

커밋할 때는 .gitmodules 파일만 커밋되어야 한다. 또한 해당 서브모듈 디렉토리의 커밋 정보가 담긴 파일을 같이 커밋해야 할 수 있다.

서브모듈 업데이트

프로젝트에서 설정된 특정 커밋으로 서브모듈을 불러온다.

shell
$ git submodule update --recursive

서브모듈 업데이트 & 원격 최신 정보 pull

프로젝트에서 설정된 것이 아닌 서브모듈 리포지토리의 최신 커밋으로 서브모듈을 업데이트한다.

shell
$ git submodule update --recursive --remote

서브모듈 초기화

서브모듈을 사용하지 않거나 다시 설정하려는 경우 아래 방법을 사용한다.

shell
$ git submodule deinit --all

# 필요한 경우 캐시 삭제
$ git rm --cached [path]

# 필요한 경우 서브모듈 파일 삭제
$ rm -r .git/modules/[path]