깃 서브모듈 사용법 - Tue, Nov 24, 2020
submodule 사용하고 있나요?
깃 저장소 안에 또 다른 깃 저장소가 필요한 경우가 종종 생긴다. 이 때 사용하는 방법은 1) submodule 2) subtree 가 있다.
서브 모듈은 엄밀하게 말하면 내 저장소의 특정 커밋이 자식 저장소의 특정 커밋을 지정해서 포함시키는 방법이다.
안드로이드 같은 경우에는 google의 repo라는 툴을 이용하기도 하는데 개인적으로 상당히 좋아하는 툴이다. 관심있는 분들은 검색해 보시길.
초기화
git submoudule add 자식저장소주소 <디렉토리 이름>
git submodule add https://github.com/joshua1988/learn-typescript pangyo-ts
위 명령을 수행하면
- 하위폴더 pangyo-ts에 해당 프로젝트를 클론한다.
- .gitmodules 파일이 신규 생성된다.
- .git/.config 파일에 서브모듈 관련 내용이 추가된다.
2)와 3)의 파일들도 열어서 내용을 확인해 보자.
커밋
git status # 이미 해당 내용이 스테이지에 올라가 이슨 것을 확인할 수 있다.
git commit -m "Add submodule josua ts"
커밋을 하면 현재 커밋에 서브모듈로 저징한 joshua1988 저장소의 최신 커밋이 내 저장소의 현재 커밋에 포함되게 된다.
다시 클론해서 가져오기
서브모듈이 포함된 프로젝트를 클론하면 해당 디렉토리가 비어 있다. 서브 모듈의 내용을 가져오려면
git submodule init
git submodule udpate
한번에 서버모듈까지 가져오려면 c.one 뒤에 --recurse-submodules
옵션을 붙이면 된다.
삭제
서버모듈 삭제는 조금 복잡하다.
.gitmoudules
파일을 열어 관련 서브모듈 내용을 삭제한다..git/config
파일을 열어서 관련 서브모듈 내용을 삭제한다.git rm --cached <서브모듈폴더>
- commit
정리하며
아주 짧게 서브모듈에 관해 정리를 해 봤다. 아래 참고문서들이 아주 자세하게 잘 나와 있으니 읽어보자.
TODO
- 서버모듈 추가팁 정리하기
- 서브트리 팁 정리하기
- google repo 명령어 사용법 정리하기