Git 서브모듈(submodule) 추가 및 삭제 방법
프로젝트는 하다 보면 외부 모듈이 필요한 경우가 있다. 그럴 때 사용하는 서브 모듈 사용법에 대해서 알아 보겠다.
개요
외부 모듈을 참조하려면 git submodule 명령을 이용해서 외부 모듈을 추가(clone)할 수 있다. git submodule 명령은 git clone과 달리 같은 작업 디렉터리(Working Directory)에 여러 모듈을 추가할 수 있는 장점이 있다.
여기에서는 명령어 예제로 Hugo의 테마인 book을 서브모듈로 추가 했다가 삭제해 보도록 하겠다.
Git Submodule 추가 방법
git submodule add
명령으로 외부 모듈을 현재 작업 디렉터리에 추가(clone)할 수 있다.
git submodule add {Git Repository URL} {Submodule Project directory}
% git submodule add https://github.com/alex-shpak/hugo-book.git themes/book
Cloning into '/Users/user/develop/devkuma-hugo-blog/themes/book'...
remote: Enumerating objects: 4124, done.
remote: Counting objects: 100% (6/6), done.
remote: Compressing objects: 100% (5/5), done.
remote: Total 4124 (delta 2), reused 2 (delta 1), pack-reused 4118
Receiving objects: 100% (4124/4124), 6.63 MiB | 5.50 MiB/s, done.
Resolving deltas: 100% (2122/2122), done.
git status
명령으로 추가된 내용을 확인 할 수 있다.
% git status
On branch main
Your branch is up to date with 'origin/main'.
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: .gitmodules
new file: themes/book
... 이하 생략 ...
이 수정된 내용을 git commit
명령으로 커밋하면 된다.
git commit -m "{commit message}
git submodule 추가된 모듈 확인
submodule이 추가되었다면 git submodule status
명령으로 추가된 모듈 목록을 볼 수 있다.
% git submodule status
036e037a63ba06ca366adb1a0c3a005d1a0b15b8 themes/book (v9-54-g036e037)
Git Submodule 삭제 방법
먼저 git submodule deinit
명령으로 해당 submodule을 제거한다.
git submodule deinit -f {Submodule Project directory}
% git submodule deinit -f themes/book
Cleared directory 'themes/book'
Submodule 'themes/book' (https://github.com/alex-shpak/hugo-book) unregistered for path 'themes/book'
다음으로는 rm
명령으로 .git/modules
해당 디렉터리를 삭제한다.
rm -rf .git/modules/{Submodule Project directory}
% rm -rf .git/modules/themes/book
그리고 git에서 해당 디렉터리를 제거해 준다.
git rm -f {Submodule Project directory}
% git rm -f themes/book
rm 'themes/book'
마지막으로 git commit
을 하면 외부 모듈을 삭제하여 커밋한다.
git commit -m "{commit message}
% git commit -m "rm themes/book"
[main f9aaff69] rm themes/book
2 files changed, 4 deletions(-)
delete mode 160000 themes/book
참고
최종 수정 : 2023-04-09