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로 이동함
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 |