Git Submodule
1. Submodule
git을 사용해서 폴더를 관리하다 보면, git으로 관리하는 폴더 안에 또 git으로 관리하는 폴더를 두고 싶은 경우가 생긴다.
이 경우에 아무런 처리를 하지 않고 상위 git 폴더를 원격 저장소에 저장하면 하위 git 폴더를 참조할 수 없게 된다.
이때 하위 git 폴더를 상위 git 폴더의 submodule로 지정하면 다음과 같이 원격 저장소에서도 하위 git 폴더를 참조할 수 있게 된다.
[하위 git 폴더 참조]
1.1 하위 git 폴더를 submodule로 생성
하위 git 폴더를 submodule로 지정하는 방법은 다음과 같다.
$ git submodule add <repository> [path]
[submodule 등록]
codeStates는 git으로 저장되는 폴더이다.
위 예시와 같이 입력을 하면 /pair/Section3라는 경로에 be-homework-mapper가 생성되고 submodule로 지정된다.
※반드시 path에 생성할 repository의 폴더 이름을 명시해주어야 한다.
등록된 submodule은 상위 git 폴더의 .gitmodule 파일에 명시되어있다.
[.gitmodule]
1.1.1 캐시 삭제
submodule을 등록할 때, 이미 인덱스에 있다는 문구와 함께 실패할 수 있다.
이는 submodule을 받을 폴더에 캐시가 남아있어서 발생하는 문제이다.
폴더에 있는 캐시는 다음과 같은 명령어로 확인할 수 있다.
git ls-files --stage [지우고자 하는 폴더 경로]
[캐시 확인]
폴더의 캐시를 지우는 명령어는 다음과 같다
git rm -cached [지우고자 하는 폴더 경로]
[캐시 삭제]
캐시를 삭제한 후에는 다시 submodule을 추가하면 된다.
1.2 이미 존재하는 하위 git 폴더를 submodule로 지정하는 방법
상위 git 폴더에 이미 하위 git 폴더가 존재하는 경우도 있다.
이 때는 직접 상위 git 폴더의 .gitmodule에 submodule로 지정한 폴더의 경로와 원격 저장소를 지정해주면 된다.
[.gitmodule]
직접 .gitmodule에 경로와 원경 저장소를 명시하면 해당 경로의 폴더가 submodule로 지정된다.
'Git' 카테고리의 다른 글
커밋 메시지 수정하기(intelliJ) (0) | 2023.08.13 |
---|---|
Github WorkFlow (0) | 2022.09.06 |
댓글