티스토리 뷰
MSA 등의 아키텍처로 프로젝트를 구성하다보면, 모노 레포가 아닌 다른 외부의 레포지토리를 사용해야 하는 상황이 발생한다.
외부에서 개발한 라이브러리일수도 또는 내부의 여러 프로젝트에서 공통으로 사용 하는 라이브러리일 수 있다.
예를 들어 서로 다른 두 프로젝트를 별개로 관리하면서 하나는 다른 프로젝트 하위에서 작업할 수 있어야 한다.
Git의 서브모듈은 이러한 문제를 해결하기 위한 도구로, Git 저장소 안에 다른 Git 저장소를 디렉토리로 분리해 넣어 서브모듈을 만든다.
다른 독립된 Git 저장소를 Clone 해서 내 Git 저장소 안에 포함할 수 있으며 각 저장소의 커밋은 독립적으로 관리한다.
서브모듈 추가하기
이미 만들어둔 Git 레포지토리에 서브모듈을 추가하기
git submodule [-d [branch]] add [url] [directory]
git submodule -d develop add https://github.com/chaconinc/DbConnector newDbConnector
기본적으로 서브모듈은 레포지토리의 이름으로 디렉토리로 생성된다.
만약 다른 디렉토리 이름으로 만들고자 할 때는 명령 마지막에 원하는 이름을 입력하면 된다.
.gitmodules 파일 생성
서브디렉토리와 하위 프로젝트 URL의 매핑 정보를 담은 설정파일이 만들어진다.
서브모듈 개수만큼 아래 세트의 내용이 생기며 .gitignore 파일처럼 버전을 관리할 수 있다.
[submodule "newDbConnector"]
path = DbConnector
url = <https://github.com/chaconinc/DbConnector>
branch = develop
서브모듈 포함한 프로젝트 Clone
1) 기본 Clone → 서브모듈 환경 만들기
git clone https://github.com/chaconinc/MainProject
# 서브모듈 정보를 기반으로 로컬 환경설정 파일이 준비됨
git submodule init
# 서브모듈의 변경 사항을 업데이트하고 Checkout
git submodule update
# 모든 서브모듈 최신으로 업데이트
git submodule update --remote
2) 보다 간단하게 서브모듈까지 한꺼번에 Clone 하기
git clone --recurse-submodules https://github.com/chaconinc/MainProject
참고자료
'Learn > Git' 카테고리의 다른 글
댓글