Git Submodule

오리·2025년 4월 28일

1. Git Submodule이란?

하나의 Git 저장소 안에 또 다른 Git 저장소를 넣는 기능

내 프로젝트 안에 외부 라이브러리나 공통 모듈을 그대로 가져와서 쓸 수 있음

그냥 복사하는 게 아니라 독립된 버전관리 상태로 연결됨

즉, 코드 복사 없이, 외부 코드와 연결해서 쓰는 방법이라고 보면 됨

버전도 고정할 수 있고, 나중에 업데이트도 선택적으로 가능

A 프로젝트 안에 B 프로젝트를 연결해두고, B도 따로 버전 관리하면서 A 안에서 같이 쓰는 방식

  • app 프로젝트 안에 common-lib이라는 공통 라이브러리를 서브모듈로 연결해두면 → common-lib 코드는 따로 관리되지만, app에서 마치 내 코드처럼 쓸 수 있음 → common-lib 는 독립된 저장소  app은 저장소의 특정 버전(커밋)을 참조만 한다

2. 왜 쓰는 걸까?

  • 공통 코드 재사용→ 여러 프로젝트에서 같은 코드를 유지보수 없이 공유 가능
  • 의존성 버전 고정→ 특정 커밋 기준으로 고정하거나 최신 상태로 동기화 가능
  • 히스토리 분리→ 메인 프로젝트의 커밋과 서브모듈 커밋을 분리 관리

3. 어떻게 추가할까?

git submodule add <repo-url> <폴더경로>
git submodule add <https://github.com/user/lib.git> libs/lib
  • .gitmodules 파일이 자동 생성되고, 서브모듈 정보가 여기에 기록됨

4. 자주 쓰는 명령어 정리

명령어설명
git submodule init서브모듈 설정 초기화
git submodule update서브모듈 실제로 받아오기
git clone --recurse-submodulesclone 시 서브모듈까지 한 번에 가져오기
git submodule update --remote서브모듈의 최신 커밋 가져오기

5. 단점?

  • 서브모듈 쪽은 추가 명령어를 따로 써야 해서 복잡할 수 있음
  • 서브모듈에서 작업할 땐 별도로 커밋/푸시해야 함

6. 언제 쓰면 좋을까?

  • 여러 프로젝트에서 같은 라이브러리 공유하고 싶을 때
  • 외부 저장소를 내 프로젝트에 종속시키지 않고 연결하고 싶을 때
  • 동일한 코드베이스를 재사용성 있게 관리하고 싶을 때

0개의 댓글