git-submodule
하나의 저장소에서 다른 저장소를 포함하고 관리할 수 있게 해주는 기능
주로 의존성 관리 및 외부 프로젝트 통합에 사용
어떻게 적용하는가
git submodule add {대상 레포지토리}
위 명령어 수행 시 github desktop에서 두가지 파일이 stage 되는것을 알 수 있다.
근데 git add랑 git stage랑 무엇이 다른걸까?
아래의 링크에서 볼 수 있듯이 똑같다고 한다. 이제 다음 스텝으로 가자
https://superuser.com/questions/1395627/differences-between-git-add-and-git-stage
gitmodules 파일에 아래의 내용이 추가 되었다.
[submodule "github-submodule-test"]
path = github-submodule-test
url = https://github.com/gogoadl/github-submodule-test.git
branch를 직접 지정해줄수도 있다고 한다.
또한 submodule을 추가 했던 레포지토리 자체의 변경사항도 있다고 나온다.
위 내용을 푸쉬하면 submodule이 등록된것을 확인 할 수 있다.
submodule 업데이트 반영
submodule을 포함하여 개발 중 submodule의 업데이트가 발생할 수 있다. 이를 반영하는 방법은 아래와 같다.
# .gitmodules 파일에 정의되어 있는 브랜치의 최신 버전으로 업데이트 (혹은 default 브랜치)
git submodule update --remote
역시나 다양한 케이스의 업데이트 방식을 지원하는 것 같다. 궁금하면 좀 더 찾아보자.
submodule 실제 활용 케이스 살펴보기
예전에 한글화에 기여했었던 서비스인 fxsound의 경우 서비스의 문자열 데이터를 저장하고 있는 Strings 레포지토리를 submodule로 관리하는 것을 알 수 있다.
현재 기여를 준비하고 있는 gihub가 주관하는 자격증의 시험 문제 덤프 서비스인 ghcertified에서도 .gitmodules로 서브모듈을 관리하고 있다. (이미지에 노란색으로 표시했다.)
이 프로젝트에서는 레포지토리 자체에서 submodule을 가지고 있지 않고, 필요할 때 submodule update를 통해 가져오도록 문서에서도 안내하고 있다.
마무리
submodule이 무엇인지, submodule을 어떻게 활용할 수 있는지 간단히 살펴보았다.
지금 당장 나에게 필요한 기능은 아니지만, 추후 필요할 때 사용할 수 있게끔 숙지해두자.
'Git' 카테고리의 다른 글
오픈소스 기여 해주세요 (저말고 님이 ㅎㅎ) (7) | 2024.09.24 |
---|---|
Github Security (Security Policy, Report Vulnerability) (2) | 2024.09.11 |
Github Foundations 오답노트 (2) | 2024.09.10 |
Github Issue Form으로 Issue Template 대체하기 (2) | 2024.09.06 |
Github Foundations 준비 (4) | 2024.09.06 |