여러개의 Git 저장소 (repository)로 이루어진 프로젝트 관리하기

by Terry posted Nov 01, 2016
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄

여러개의 Git 저장소 (repository)로 이루어진 프로젝트 관리하기

프로젝트를 진행하다보면 여러 프로젝트에서 사용하는 공통 모듈이 존재하곤 합니다.

Git은 이를 대비해 submodule 기능을 제공합니다. Submodule은 subversion의 external link 와 유사한 개념으로 다른 git 저장소를 링크할 수 있습니다.

주의 점은 submodule은 지정된 저장소 (repository)의 HEAD (최근 갱신)을 가리키지 않고 특정 버전을 가리키게 됩니다.

이는 단점이자 submodule의 버전을 관리 할 수 있는 장점이 되기도 합니다.

git-submodules-abstract.png



서브모듈 연결하기

사전 조건

1) Submodule repository 준비: 본 글에서는 c:\gitrepo\subrepo 

2) 프로젝트 repository 준비:  본 글에서는 c:\gitrepo\projectrepo


절차

Step 1) 프로젝트 repository clone (작업 공간= c:/workspace)

git clone c:\gitrepo\projectrepo .


Step 2) Submodule 추가하고 remote에 반영 (subrepo의 HEAD에 연결)

git submodule add c:\gitrepo\subrepo subrepo    #project\subrepo directory에 submodule 연결

git commit -m "서브모듈 추가"

git push


Step 3) 다른 workspace에서 submodule이 포함된 project 저장소 클론하기

git clone --recurse-submodules c:\gitrepo\projectrepo .


</서브모듈 연결 끝>

연결된 서브모듈의 버전 변경하기

사전 조건

1) subrepo 의 버전 "4feb206abf852abf1c6eff453db7d625699e14ee" 으로 갱신하는 예

2) subrepo의 git 설정 수정 (.git/config 파일에 아래 두 줄 추가)

   [receive]

                denyCurrentBranch = warn

절차

Step 1) 프로젝트 repository clone (작업 공간= c:/workspace\project)

git clone --recurse-submodules c:\gitrepo\projectrepo .


Step 2) subrepo의 hash 보기

git log 을 통해 subrepo의 해쉬 확인

본 예에서는 "4feb206abf852abf1c6eff453db7d625699e14ee" 로 결정


Step 3) project workspace (로컬 repository)에서 subrepo 버전 갱신

cd subrepo

git checkout 4feb206abf852abf1c6eff453db7d625699e14ee

cd ..  #project root directory로 이동

git commit -am "subrepo의 버전 갱신 - 4feb206abf852abf1c6eff453db7d625699e14ee"

git push


Step 4) 다른 사용자들이 update 된 submodule을 받는 방법

git submodule update --recursive   #하위 submodule들 모두 갱신


</끝>