HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
♥️
2기 최종 프로젝트 팀별 공간
/
[팀 BackFro💯] ArtZip: 세상 모든 전시회를 한 번에
[팀 BackFro💯] ArtZip: 세상 모든 전시회를 한 번에
/
☠️
백엔드 기술 문서
/
🧩
Git Submodule 적용하기
🧩

Git Submodule 적용하기

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
      1. submodule 내부 폴더 들어가서 add, commit, push
      1. 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
    • 안전하게 2번으로 통일하자.

이슈

  • submodules 내 파일들, resources 내부 파일들 동일하게 관리하는건가?
    • build.gradle의 copy를 활용하여 빌드 될 때에 프로젝트 내 resources 폴더 내로 submodule 내 파일들이 복붙될 수 있도록 해결.
    •