최근 회사에서 진행하였던 프로젝트 코드들을 보며 공부하기 위해 GitHub에서 프로젝트들을 Clone하여 실행 중에 에러가 발생하여 당황하였다. Clone 후 자바 버젼 확인 후 바로 실행 시켰는데 무슨 문제가 있는거지? 라고 생각을 하던 와중 프로젝트에 패키지가 누락되어 있었다. Github에는 'BE-App-Module @ 0fe3cdc'라는 패키지 폴더가 존재하는 반면, 클론한 프로젝트에는 이 서브모듈이 포함되어 있지 않아서 생긴 문제였다.😭
처음에는 브랜치가 다른것도 아니고 왜 전부 Clone이 안되었을까... 생각하며 구글링을 하니 Git Submodule 이라는 단어를 알게 되어서 찾아볼려고 한다.
1. Git Submodule이란?
Git Submodule은 하나의 Git 저장소 안에 다른 Git 저장소를 포함할 수 있게 해주는 기능입니다. 이를 통해 대규모 프로젝트에서 여러 팀이 동시에 작업할 수 있는 환경을 조성할 수 있습니다. 예를 들어, 공통 라이브러리나 외부 API를 사용하는 경우, 이를 서브모듈로 관리하면 각 프로젝트에서 독립적으로 업데이트하고 사용할 수 있습니다.
2. 장점
- 코드 재사용성 : 여러 프로젝트에서 동일한 코드를 재사용할 수 있어 중복 작업을 줄일 수 있습니다.
- 독립적인 버전 관리 : 서브모듈은 독립적으로 버전 관리가 가능하여, 각 프로젝트의 요구에 맞게 업데이트할 수 있습니다.
- 팀 협업 용이 : 여러 팀이 동시에 작업할 수 있는 환경을 제공하여, 프로젝트의 효율성을 높입니다.
3. 추가하는 방법
서브모듈을 추가하는 방법은 매우 간단합니다. 아래의 단계를 따라 해보세요.
- 서브모듈 추가 : 먼저, 메인 저장소에서 서브모듈을 추가합니다. 아래의 명령어를 사용합니다.
예를 들어, git submodule add https://github.com/example/repo.git submodule-directory와 같이 입력합니다.
git submodule add <repository-url> <path> - .gitmodules 파일 확인 : 서브모듈을 추가하면 .gitmodules 파일이 생성됩니다. 이 파일에는 서브모듈의 경로와 URL이 포함되어 있습니다.
- 서브모듈 초기화 : 서브모듈을 추가한 후, 다음 명령어로 초기화합니다.
git submodule init - 서브모듈 업데이트 : 서브모듈을 업데이트하려면 아래의 명령어를 사용합니다.
git submodule update
4. 관리하는 방법
서브모듈을 관리하는 것은 매우 중요합니다. 다음은 서브모듈을 관리하는 방법입니다.
- 서브모듈 업데이트 : 서브모듈의 최신 버전을 가져오려면 git submodule update --remote 명령어를 사용합니다.
- 서브모듈 삭제 : 서브모듈을 삭제하려면, 먼저 .gitmodules 파일에서 해당 서브모듈을 제거한 후, 아래의 명령어를 사용합니다.
- git rm --cached <submodule-path>
5. 실전 예제
실제 프로젝트에서 Git Submodule을 사용하는 예제를 살펴보겠습니다. 예를 들어, 웹 애플리케이션을 개발할 때, 공통으로 사용하는 UI 라이브러리를 서브모듈로 추가할 수 있습니다. 이를 통해 UI 라이브러리의 업데이트가 필요할 때, 메인 프로젝트에 영향을 주지 않고 독립적으로 관리할 수 있습니다.
'Git' 카테고리의 다른 글
[Git] 깃(git) 커밋(commit), 푸시(push) (1) | 2024.01.03 |
---|