목차
서브모듈(Submodule)은 git repository 안에 다른 하위 git repository 를 관리하는 도구이다.
예를 들어, 프로젝트 A 에서 외부 라이브러리를 사용하기 위해서 외부 라이브러리를 프로젝트 A 폴더 안에 저장하는 것이다.
서브모듈을 git repository 에 추가한 다음 github 에 올리면 아래와 같이 파란색 글씨로 표시된다.
서브모듈 git repository 이름과 서브모듈의 commit hash 값이 함께 표시되며, 클릭 시 해당 repository 로 이동한다.
이때, 서브모듈 repository 가 private 으로 설정되어 있다면, 다른 사람이 해당 서브모듈을 클릭했을 때 해당 페이지로 이동할 수 없다.
만약, 다른 사람들도 서브모듈 repository 를 접근할 수 있게 하고자 한다면 public 으로 전환하거나, collaborator 로 추가하면 된다.
하나의 repository 안에서 다른 사람들과 코드를 공유하고 싶은 경우라고 해보자.
기존에 다른 repository 에서 작성한 코드가 있는 상태일 때 사용할 수 있는 방법은 크게 2가지이다.
commit 내역을 공유해야 하는 상황이라면 서브모듈을, 그렇지 않다면 파일 복붙이 적절할 것이다.
서브모듈을 그림으로 표현하면 다음과 같다.