git submodule add -b main https://github.com/jujeol-jujeol/[나만의 비밀 레포지토리].git
팀원들 처음 세팅
- clone한 프로젝트가 있는 경우
# 서브모듈 이니셜라이징 git submodule init # 서브모듈 업데이트 git submodule update # 모든 서브모듈에서 main으로 checkout 합니다. git submodule foreach git checkout main
- clone한 프로젝트가 없는 경우
git clone --recurse-submodules {project_url}
원격저장소의 변경 사항 적용
# project root에서 git submodule update --remote --merge
- update 명령어 사용하면 새로 커밋해야 하는 파일이 생김. add, commit, push 해도 됨.
❗주의사항
- submodule에 대한 변경사항이 있다면 submodule의 저장소에 먼저 커밋, 푸시를 진행하고, 이후 메인 프로젝트에 커밋, 푸시를 진행해야한다.
- 메인 모듈을 먼저 커밋할 시 서브모듈 변경사항 추적하지 못하게 됨.
- 서브 모듈 먼저 커밋했더라도 메인 모듈 푸시를 먼저하면 안됨.
서브모듈 커밋, 푸시 → 메인모듈 커밋, 푸시 하는 법
- 가장 이상적인 flow
- submodule 내부 폴더 들어가서 add, commit, push
- main module에서 add, commit, push
메인, 서브 모듈에서 commit 후, push 서브 모듈부터 메인 모듈 순서로 한꺼번에 진행하는 법
# 첫 번째 방법 git submodule foreach --recursive 'git push' && git push # 두 번째 방법 (저는 안됨) git push --recurse-submodules=on-demand
- 귀찮으니까 디폴트 push 명령어에 옵션을 주어 별도의 명령어를 추가하지 않아도 check / 순서 제어할 수 있도록 하자.
# 1. push시에 항상 check하고 싶다 git config push.recurseSubmodules check # 2. push시에 항상 서브 모듈 push git config push.recurseSubmodules on-demand
이슈
- submodules 내 파일들, resources 내부 파일들 동일하게 관리하는건가?
- build.gradle의 copy를 활용하여 빌드 될 때에 프로젝트 내 resources 폴더 내로 submodule 내 파일들이 복붙될 수 있도록 해결.