submodule을 폴더 내에 어디에 위치시킬지 등록한다.
처음 레파지토리에 등록하면, 이후 다른 작업자는 등록할 필요없다.
git submodule add https://github.com/gnuoy-oh/test frontend/src/assets/style-core
서브모듈 등록, status 확인 후 commit!
git commit -m 'Added: core-style module'
처음 서브모듈이 추가된 내용을 받아오면 서브모듈 디렉토리가 비어있다. 아래 명령어로 서브모듈 내용을 가져온다.
git submodule init
git submodule update
작업 중 서브모듈의 변경사항을 업데이트 해오는 명령어.
test 저장소의 main 브랜치를 참조해 가장 최근 커밋을 업데이트 해온다.
$ git submodule update --remote
From https://github.com/gnuoy-oh/test
bb8195d..4f903ac main -> origin/main
Submodule path 'source/frontend/src/style-core': checked out '4f903acf48e0a5502830eeda15bdd15f6a48c60e'
루트 디렉토리 (/test
)에서 아래와 같이 작성하면 style-core 서브모듈만 콕 찝어 업데이트 할 수 있다.
git submodule update --remote source/frontend/src/assets/style-core
그렇지만, 서브모듈이 코어 디자인 하나만 등록된 프로젝트라면 위의 git submodule update --remote
명령어를 사용해도 괜찮다!
업데이트 한 서브모듈의 커밋 내역을 확인한다.
git diff --submodule
위 명령어를 입력하면 새로운 화면에 아래와 같이 서브모듈로부터 업데이트 해 온 커밋명이 출력된다.
Submodule source/frontend/src/style-core bb8195d..4f903ac:
> Merge pull request #72 from gnuoy-oh/dev (커밋)
(END)
q
를 눌러 빠져나온다.
변경 내용을 확인했고 이상이 없다면 커밋을 남기고 원격 저장소에 Push 한다.
커밋을 작성할 때는 프로젝트를 수정한 내용과 서브모듈을 업데이트한 내용이 섞이지 않도록, 업데이트 즉시 커밋을 남기는 것이 좋다.
커밋 메시지는 Changed
프리픽스를 사용하고, 어떤 커밋을 기준으로 merge 했는지도 함께 기록 한다.
git commit -m"Changed: style-core (IDC@4f903ac)"
브랜치 origin/master 가 origin/main 으로 바뀌어서 발생한 이슈로, 아래와 같이 터미널에서 출력되었다.
fatal: Needed a single revision
Unable to find current origin/master revision in submodule path 'source/frontend/src/assets/style-core'
아래와 같이 submodule 브랜치를 변경한다.
git config -f .gitmodules submodule.source/frontend/src/assets/style-core.branch dev