반응형
이번 포스팅에서는 [협업 워크플로우] 파트의 세부 주제인 저장소 안의 저장소 (Submodule)에 대하여 상세히 알아보겠습니다.

1. 서브모듈(Submodule)의 개념
여러 개의 마이크로서비스 프로젝트나 다양한 프론트엔드 프로젝트에서 공통적으로 사용하는 핵심 라이브러리 코드가 있다고 가정해 보겠습니다. 코드를 복사해서 붙여넣는 방식은 유지보수 측면에서 재앙에 가깝습니다. Git 서브모듈은 하나의 상위 Git 저장소 내부에 완전히 독립된 다른 Git 저장소를 하위 디렉토리로 삽입하고 관리할 수 있게 해주는 기능입니다.
2. 서브모듈 추가 및 클론
서브모듈은 상위 저장소와 완전히 분리된 커밋 이력을 가집니다. 상위 저장소는 단지 "서브모듈의 특정 커밋 해시(버전)"만을 가리키는 형태로 관리됩니다.
# 현재 진행 중인 상위 프로젝트에 공통 라이브러리를 서브모듈로 추가
$ git submodule add https://github.com/my-org/common-utils.git libs/common
서브모듈이 포함된 상위 프로젝트를 최초로 clone 할 때는 빈 폴더만 생성됩니다. 내부 데이터까지 모두 가져오려면 추가적인 명령어가 필요합니다.
# 방법 1: 일반 클론 후 서브모듈 초기화 및 업데이트 수행
$ git clone https://github.com/my-org/main-project.git
$ cd main-project
$ git submodule init
$ git submodule update
# 방법 2: (권장) 클론 명령어에 --recurse-submodules 옵션 추가
$ git clone --recurse-submodules https://github.com/my-org/main-project.git
지금까지 저장소 안의 저장소 (Submodule)의 개념과 구체적인 활용 방안에 대해 살펴보았습니다. 이어지는 다음 포스팅에서 관련 심화 주제를 지속적으로 다루어보겠습니다.
반응형
'CI.CD > GIT' 카테고리의 다른 글
| [GIT] 프로페셔널한 커밋 메시지 작성 가이드 (0) | 2026.07.14 |
|---|---|
| [GIT] 성공적인 협업을 위한 필수 권장 사항 (0) | 2026.07.14 |
| [GIT] 오픈소스 기여의 첫걸음 (Fork) (0) | 2026.07.14 |
| [GIT] 코드 리뷰의 중심, Pull Request (PR) (0) | 2026.07.14 |
| [GIT] 성공적인 협업을 위한 브랜치 전략 모음 (0) | 2026.07.14 |