Skip to main content

Git submodule


A에 B 추가

cd <path/A>
git submodule add <URL/B> <path/A/path/B>
git commit -m "Add submodule B"
A
├── .git
├── .gitmodules
└── B
└── .git

Submodule B 수정

B 안의 파일을 수정하고 아래와 같이 진행하면 수정한 내용이 B 저장소에만 적용됩니다.

cd <path/A/path/B>
git add <file>
git commit -m <commit message>

A 저장소에도 변경 사항을 반영합니다.

cd <path/A>
git commit -am "Update submodule B"

B 수정 후 A에 적용

B 저장소의 업데이트 내용을 먼저 pull 합니다.

cd <path/A/path/B>
git checkout <branch>
git pull

A 저장소에 변경 사항을 반영합니다.

cd <path/A>
git commit -am "Update submodule B"

Submodule이 있는 저장소 clone

git clone --recursive <URL/A>

B는 detached 상태입니다. 수정이 필요한 경우 checkout을 통해 원하는 브랜치로 변경한 후 작업하시기 바랍니다.

아래 명령어 결과는 git clone --recursive <URL/A>와 동일합니다.

git clone <URL/A> \
&& git submodule init \
&& git submodule update

Submodule이 변경된 A pull

cd <path/A>
git pull
git submodule update