서브모듈이란?

A submodule is a repository embedded inside another repository. The submodule has its own history; the repository it is embedded in is called a superproject.

출처 : https://git-scm.com/docs/gitsubmodules

하나의 레포지토리가 다른 레포지토리를 참조하게 하는 것을 말한다. 이때 참조하는 레포지토리가 참조 당하는 레포지토리의 주 브랜치의 HEAD 커밋을 참조한다. 특히, 참조 당하는 레포지토리(=서브모듈)가 private 이라면 “민감한 정보가 담긴 파일의 변경사항을 추적하지 않으면서, 참조”를 하는게 가능해진다. 당연하게도, 참조 당하는 레포지토리는 파일의 변경 사항을 추적할 수 있다.

⇒ 참조하는 레포에서는 서브모듈의 HEAD 의 커밋을 참조하기 때문에 내부 변경 사항을 모르지만, 서브모듈에서는 변경 사항 추적 가능하다.

⇒ 버전 관리를 하며 시크릿 파일을 공유할 수 있다.

<aside> 💡 갑자기 든 생각 :: 근데 우리 레포지토리 지금도 private 인데 서브모듈을 쓸 필요가 있나? 🤔 ⇒ yml 파일 버전 관리를 위해서 만들어두자

</aside>

서브모듈로 yml 파일을 숨기는 과정

ref