
✔️git submodule
나름 2020년.. 첫 개발을 시작할 때부터 git에 대해 잘 배웠고. . . (ssafy 선생님이 매우 구우우우욷)
2021년 프로젝트와 부캠을 하면서 cherry-pick, rebase merge, squash merge 등 git에 대해서는 나름 잘 안다고 생각했었는데 . .
오늘 업무하면서 submodule이란게 있다는 것을 처음 알았다. 두둥
submodule 메인(부모) repo에 하위(자식) repo를 두고 관리하는 경우에 쓴다.
예를 들면, 한 프로젝트가 있을 때 이 프로젝트의 engine, 그리고 engine을 사용해서 기능을 구현할 때
engine따로, 기능 구현 따로 개발이 진행되어야하기 때문에 이렇게 쓴다.
찾아보니 이 외에도 외부에 노출시키지 않기 위해 쓰는 경우(https://tecoble.techcourse.co.kr/post/2021-07-31-git-submodule/) 도 있었다.
submodule을 사용할 때는 clone할 때 $git clone --recursive {URL}
를 사용하면 메인 repo와 하위 repo를 한 번에 받아올 수 있다.
(오늘의 나는 이걸 모르고 메인 repo만 clone했다가 왜 실행이 안되지?.? 했었다. ㅎㅋ)
그리고 서브모듈을 pull할 때에는 $git pull --recurse-submodules
혹은 $git submodule update --recursive --remote
이다.
그리고 submodule을 사용할 때 하나의 메인 repo에는 다수의 하위 repo를 둘 수 있다.!
이 때는 foreach
를 사용하면 모든 하위 repo에 한 번에 같은 명령을 줄 수 있다.
(`$ git submodule foreach 'git stash'`)
참고 자료
- https://git-scm.com/book/ko/v2/Git-%EB%8F%84%EA%B5%AC-%EC%84%9C%EB%B8%8C%EB%AA%A8%EB%93%88
- https://ohgyun.com/711
- https://tecoble.techcourse.co.kr/post/2021-07-31-git-submodule/
- https://guseowhtjs.tistory.com/entry/%EB%AA%A8%EB%93%A0-git-%ED%95%98%EC%9C%84-%EB%AA%A8%EB%93%88%EC%9D%98-%EC%B5%9C%EC%8B%A0-%EB%B2%84%EC%A0%84%EC%9D%84-%EA%B0%80%EC%A0%B8%EC%98%A4%EB%8A%94-%EC%89%AC%EC%9A%B4-%EB%B0%A9%EB%B2%95