본문 바로가기
Programming

Git Submodule 사용법

by 느리게 걷는 즐거움 2024. 7. 24.
반응형

Git Submodule을 사용하는 방법

Git을 사용하여 프로젝트를 관리하다 보면, 하나의 프로젝트 내에서 다른 Git 저장소를 서브모듈(submodule)로 포함해야 하는 상황이 발생할 수 있습니다. Git 서브모듈을 사용하면 메인 프로젝트 내에서 다른 프로젝트를 독립적으로 관리하고 버전을 제어할 수 있습니다. 이 글에서는 Git 서브모듈을 사용하는 방법을 단계별로 설명하겠습니다.

Git 서브모듈이란?

Git 서브모듈은 하나의 Git 저장소 내에 다른 Git 저장소를 포함시키는 기능입니다. 이를 통해 여러 프로젝트 간의 코드 의존성을 쉽게 관리할 수 있으며, 서브모듈로 포함된 프로젝트는 독립적으로 버전 관리가 가능합니다.

서브모듈 추가하기

서브모듈을 추가하려면 다음 명령어를 사용합니다:

git submodule add <서브모듈_URL> <경로>

예를 들어, `example-submodule`이라는 이름의 서브모듈을 추가하려면 다음과 같이 합니다:

git submodule add https://github.com/user/example-submodule.git path/to/submodule

이 명령어를 실행하면 `.gitmodules` 파일이 생성되고, 서브모듈 정보가 기록됩니다.

서브모듈 초기화 및 업데이트

서브모듈을 초기화하고 업데이트하려면 다음 명령어를 사용합니다.

git submodule init
git submodule update

이 명령어는 서브모듈을 초기화하고, 서브모듈의 최신 커밋을 가져옵니다. 새로운 클론(clone) 시에도 서브모듈을 초기화하고 업데이트해야 합니다.

서브모듈 커밋 및 푸시

서브모듈의 변경 사항을 커밋하고 푸시하는 방법은 다음과 같습니다:

서브모듈에서 작업

서브모듈 디렉토리로 이동하여 작업을 진행하고, 변경 사항을 커밋합니다.

cd path/to/submodule
# 파일 수정
git add .
git commit -m "서브모듈 변경 사항"
git push origin main
메인 저장소에서 서브모듈 커밋

서브모듈 디렉토리의 루트로 이동하여 서브모듈의 변경 사항을 커밋합니다.

cd ../../ # 메인 저장소 루트로 이동
git add path/to/submodule
git commit -m "서브모듈 업데이트"
git push origin main
서브모듈 제거하기

서브모듈을 제거하려면 다음 단계를 따릅니다:

1. 서브모듈 디렉토리와 관련된 항목을 `.gitmodules` 파일에서 제거합니다.
2. `.git/config` 파일에서 서브모듈 관련 항목을 제거합니다.
3. 서브모듈 디렉토리를 제거합니다.
4. 캐시에서 서브모듈을 제거합니다.

git rm --cached path/to/submodule
rm -rf path/to/submodule
rm -rf .git/modules/path/to/submodule
git commit -m "서브모듈 제거"
git push origin main

유용한 명령어 요약

작업 명령어
서브모듈 추가 git submodule add <서브모듈_URL> <경로>
서브모듈 초기화 git submodule init
서브모듈 업데이트 git submodule update
서브모듈 제거 git rm --cached <경로><br>rm -rf <경로><br>rm -rf .git/modules/<경로><br>git commit -m "서브모듈 제거"<br>git push origin main


서브모듈을 통해 프로젝트 간의 코드 의존성을 효율적으로 관리하고, 독립적인 버전 관리를 할 수 있습니다. 

반응형

'Programming' 카테고리의 다른 글

Git 변경이력 확인하기 (git blame)  (2) 2024.07.24
Git에서 특정 커밋으로 원복하기  (0) 2024.07.24
Git 특정 Tag로 원복하기  (1) 2024.07.24
Git Remote Branch 확인 방법  (0) 2024.07.24
Git Merge 사용방법  (0) 2024.07.24