궁금한게 많은 개발자 노트

[ github ] submodule이란? 본문

DevOps

[ github ] submodule이란?

궁금한게 많은 개발자 2023. 2. 22. 14:44

GitHub Submodule은 Git 프로젝트에서 다른 Git 프로젝트를 하위 디렉토리에 포함시키는 방법입니다. 

Submodule을 사용하면 하나의 Git 저장소에서 여러 개의 프로젝트를 관리할 수 있으며, 각 프로젝트는 별도의 저장소로 유지됩니다. 이를 통해 복잡한 프로젝트를 여러 저장소로 분할하여 개발, 관리, 배포를 용이하게 할 수 있습니다.

 

 

다른 Git 저장소를 하위 디렉토리로 포함시키는 방법은 다음과 같습니다.
1. Submodule을 포함시키고자 하는 Git 저장소에서 다음 명령어를 실행하여 Submodule을 추가합니다.

git submodule add [repository-url] [path]

여기서 [repository-url]은 추가하려는 Submodule의 Git 저장소 URL이며,

[path]는 Submodule을 포함시킬 하위 디렉토리 경로입니다.

 

2. Submodule을 초기화하고 업데이트합니다.

git submodule init
git submodule update

3. Submodule을 업데이트하려면 다음 명령어를 실행합니다.

git submodule update --remote

 

이렇게 하면 Submodule을 최신 버전으로 업데이트할 수 있습니다.

 

 

Submodule을 사용하면 Git 저장소에서 다른 저장소를 사용할 수 있으므로, 여러 저장소에서 공통으로 사용되는 코드나 라이브러리 등을 효율적으로 관리할 수 있습니다. 하지만 Submodule을 사용할 때 주의해야 할 점은, Submodule이 가리키는 저장소의 변경사항이 부모 저장소에 바로 반영되지 않으므로, Submodule을 사용하는 프로젝트를 관리할 때 Submodule의 상태를 항상 확인해야 합니다.

git submodule status

git submodule status명령어를 통해 업데이트가 필요한지 여부를 알 수 있습니다. 실제로 서브모듈이 최신 버전인지 확인하려면, 해당 서브모듈 디렉토리로 이동하여 git pull 명령어를 실행하거나, 부모 레포지토리에서 git submodule update 명령어를 실행하여 갱신할 수 있습니다.

따라서, 서브모듈을 업데이트하기 전에 항상 git submodule status 명령어를 사용하여 서브모듈의 상태를 확인하고, 업데이트가 필요한 경우 적절한 명령어를 실행하여 업데이트를 수행하는 것이 좋습니다.

 

 

Submodule의 삭제 방법이 예전엔 복잡했다고 합니다. 하지만 최근 git version에서는 간단한 명령어를 통해 삭제가 가능하다고 합니다 .아래는 git submodule 삭제 명령어입니다.

git submodule deinit -f -- submodule    
rm -rf .git/modules/submodule
git rm -f submodule

# git latest version 
git rm -f submodule
Comments