Git Submodule 생성 및 삭제

데이터에 대한 모든 것·2023년 2월 25일

Django 프로젝트를 진행하면서, 여러 Django 프로젝트간의 Model을 공통적으로 사용해야 하는 경우가 생겼다. 이 Model 들의 관리가 공통적으로 유지되게 하기 위해서 submodule을 도입하고자 하였다.

Git Submodule 추가

  • 우선적으로 공통적으로 쓸 Model들을 관리하기 위한 "table"이라는 이름의 Django App을 생성하였고 진행중이였던 프로젝트였기 때문에 기존의 프로젝트에서 어느정도의 Model 생성 작업을 완료하였다.
  • 어느정도 완성된 "table" App을 분리하기 위해서 "table"만을 가진 private Git repository을 생성하였다.
  • 최상위 디렉토리에 "table" App이 있는 형태로 repository를 만들었고, 이 형태로 여러 Django 프로젝트에서 사용될려면 submodule 생성 형태가 Repository 이름을 무시하고 바로 table이 전체 Django프로젝트 하위의 하나의 App으로 들어가는 형태로 구현해야 했다.
git submodule add <submodule Repository의 Git주소> <메인 Repository에 추가할 경로>

이러한 상황에서 메인 Django 프로젝트의 프로젝트명을 Manager라고 한다면, submodule을 추가할 경로는 다음과 같다.

Git Submodule 삭제

  • Submodule 추가 작업을 하면서 원하는 위치와 이름으로 생성되지 않아 submodule을 삭제해야하는 일이 많았다.
  • 추가한 submodule 을 삭제하는 방법은 다음과 같다.
  1. git submodule 명령어로 현재 submodule이 생성되었는지 확인하기
git submodule
	어떠한 값도 출력하지 않는다면, submodule이 생성되지 않은 것이다.
  1. git submodule deinit -f <submodule 이름>
Git submodule deinit -f <submodule 이름>
	<submodule 이름>은  1번에서 출력된 submodule 이름입니다.
  • git submodule deinit 을 하더라도, 아직 submodule이 남아있는 형태가 되는데 이는 submodule 추가 당시에 생성된 파일 및 폴더를 git rm -f 명령어로 삭제해주어야 한다!
profile
좋은 서비스는 좋은 데이터로부터 나온다 :)

0개의 댓글