HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
♥️
2기 최종 프로젝트 팀별 공간
/
🐳
[팀 07] 머구리(Meoguri)
/
🎱
WorkSpace
/
♦️
Git submodule 사용하기
♦️

Git submodule 사용하기


 
application.yml 파일들에는 중요한 정보가 있어서 git submodule을 이용해 관리합니다.
 
git submodule 설정과 설정 파일 위치는 크러쉬가 완료 했습니다.
 
팀원분들은 사용하는 방법에 대해 숙지하고 계시면 좋을 것 같습니다.
 
일단 큰 흐름을 말씀드리면
 
notion image
 
프로젝트 루트 디렉토리 밑에 config 디렉토리에 모든 설정 파일들을 관리합니다. (config 디렉토리가 git submodule로 관리되고 있는 디렉토리입니다.)
 
config 밑에 둔 이유는 스프링이 설정 파일을 스캔할때 resource 디렉토리와 루트 디렉토리에 있는 config 디렉토리를 기본적으로 스캔하기 때문에 config 파일 밑에 설정 파일을 관리하기로 결정했습니다. 따라서 팀원 분들은 resource 디렉토리에 설정 파일을 두었을때와 사용 방법이 동일할 것입니다.
  • 참고
    • git submodule을 사용하면 Jenkins에서 소스코드를 가져오는 과정에 변화가 필요해 보입니다.!
 

각자 프로젝트에 git submodule 도입하기


 
제가 생각하기로는 각자 로컬은 현재 git submodule이 도입되지 않은 상황일 것 같습니다. 하지만 clone은 되어있다고 가정하겠습니다.
 
// submodule 초기화 % git submodule init // 메인 레포지토리가 기억하는 submodule의 특정 커밋 시점으로 업데이트 % git submodule update
위 두 명령어를 이용하면 git submodule 설정이 완료됩니다.
 
만약 아직 clone 하지 않은 상황이면
% git clone --recurse-submodules {project_url}
를 사용하면 됩니다.
 
 

submodule에 변경이 있는 경우


 
// .gitmodules 파일에 정의되어 있는 브랜치(default는 main 또는 master)의 최신 버전으로 업데이트 % git submodule update --remote // 로컬에서 작업 중인 부분과 원격에 작업된 부분이 다른 경우 머지까지 진행 % git submodule update --remote --merge
 
git pull 할때 한번에 끌어오기!
% git pull --recurse-submodules
 
  • 주의사항
    • 프로젝트 submodule에 변경이 생겼다면 한 가지 주의할 사항이 있습니다.
    • 메인 프로젝트보다 먼저 Push 또는 Pull을 해야합니다. 그렇지 않고 메인 프로젝트를 push/pull하고 submodule을 push/pull 하면 예상치 못한 오류가 발생할 수 있습니다. (왜냐하면 메인 프로젝트는 submodule을 그대로 가지지 않고 path, url, commit 정보만 저장하기 때문입니다.)
 

reference


 
git submodule로 중요한 정보 관리하기
git submodule은 메인(부모) 레포지토리에 하위(자식) 레포지토리를 두고 관리하기 위한 도구이다. 하나의 프로젝트에서 다른 프로젝트를 함께 사용해야 하는 경우 주로 활용한다. 필자는 이번에 이를 프로젝트 비밀 정보를 숨기기 위한 용도로 이용했다. 어떻게 적용하게 됐는지, 어떻게 적용했는지를 글을 통해 알아보자. 레벨 3 팀 프로젝트를 진행하며 중요한 정보(e.g. secret key)를 외부에 노출되지 않게 관리할 일이 생겼다.
git submodule로 중요한 정보 관리하기
https://tecoble.techcourse.co.kr/post/2021-07-31-git-submodule/
git submodule로 중요한 정보 관리하기