Git submodules // Git(9)

2022. 2. 25. 20:25
    • 얄코님의 git강의 중, 깃의 submodule에 관함

sub modules

  • 프로젝트를 진행하다 보면, 프로젝트 내부에 서브 프로젝트를 진행하게 됨
  • 이때, 단순히 깃으로 관리하면 서브 프로젝트 내부에 있는 모든 파일들도 관리를 하게됨
  • 만약 메인 프로젝트와 서브 프로젝트의 파일들을 깃으로 관리는 하되, 메인에서 직접적으로 관여는 하지 않는 약간 별개의 파트처럼 구분해서 다룰 때 sub module을 사용 

 

1)적용 방법

  • 두 프로젝트(main , sub)를 생성  > 양쪽 모두 파일 만들고 커밋 > 두 프로젝트를 각각의 github-repo에 올림
  • main project의 디렉토리에서 다음을 입력
git submodule add (submodule의 GitHub 레포지토리 주소) (하위폴더명, 없을 시 생략)
  • 이걸 입력하면, 프로젝트 폴더 내에 github레포지토리와 동일한 이름의 submodule  폴더가 생김(적용 완료!)

 

2)main과 submodule사이의 관계

  • main 프로젝트에서(main프로젝트의 디렉토리에서) bash를 활용해 작업을 진행해도, submodule 내의 파일에 직접적인 관여가 불가능함 ex) git add . 등을 해도, submodule의 변경내역을 스테이징 하거나 커밋할 수 없음
  • 그러면 main에서 sub에 대해 관리하는 것은? submodule의 커밋임. submodule의 파일에는 세세하게 관여하지 않지만, '어떤 커밋까지가 진행되었는지'를 확인함
  • 깃헙에서는 다음과 같이 submodule의 폴더가 함께 올라와있는 것처럼 보임. 해당 폴더를 클릭하면, submodule의 repo로 이동함

메인프로젝트에 submodule의 폴더가 있음. submodule폴더를 클릭하면 submodule의 repo로 이동한다.

 

3)submodule의 파일 관리

  • submodule경로의 bash에서 명령을 수행하면, submodule의 파일들을 대상으로 git이 실행됨. 거기서 업데이트 하면 됨

 

 

4)submodule 파일 github에서 받아오기

  • 만약 main project를 어딘가 새로 clone할 경우, submodule의 폴더와 깃에서 모듈을 설명하는 파일인 .gitmodules가 함께 생성된다.
  • 그러나 실제로 submodule폴더에는 submodule의 파일이 들어있지 않은데, 이는 너무 이것저것 다받는 것은 낭비가 될 수 있기 때문임
  • 만약 submodule의 파일을 받으려면 다음을 입력한다
  • 서브모듈의 이름을 입력하지 않으면 모든 서브모듈의 파일들이 받아짐
  • 서브모듈의 이름은 .gitmodules에서 확인할 수 있다.
#submodule 파일 내려받기
git submodule init (특정 서브모듈 지정시 해당 모듈의 이름)
git submodule update

#submodule의 파일을 받은 이후, submodule의 repo에 업데이트가 발생시 이를 받아올 경우
git submodule update --remote

 

 

 

'개발도구 > git' 카테고리의 다른 글

Git 명령어 모음  (0) 2022.05.18
git을 활용한 작업 flow  (0) 2022.05.06
Git tag // Git(7)  (0) 2022.02.25
Git Head // Git(6)  (0) 2022.02.25
노션 이동 완료Git : GitHub // Git(5)  (0) 2022.02.25

BELATED ARTICLES

more