한 레포지토리에 전체 프로젝트를 업로드 하고, 추가로 작은 모듈별로 나눠서 레포지토리를 만들고 싶었다.
그래서 처음엔 레포지토리로 생성하고 싶은 모듈의 디렉터리를 github에 업로드했다.
그런데 레포지토리에서 파일 디렉터리안에 .git 파일이 있으면, 아래처럼 하얀 화살표가 생기면서 디렉터리를 볼 수 없는 상황이 생겼다. 생긴 파일들은 들어가 지지 않고, 내부가 채워지지 않은 하위 모듈 상태라고 한다.
검색을 통해서 git subtree를 발견했다!!
git subtree는 레포지토리 안에 레포지토리를 저장하는 것을 도와준다.
우선 다음과 같이 두 개의 레포지토리가 필요하다.
- 부모 Repository
- 자식 Repository
여기서 부모 Repository는 root(GitHub 프로필에서 보여지는 레포지토리) 이고,
자식 Repository는 부모 Repository 내부에 넣을 레포지토리 이다.
1. 서브트리로 사용할 원격 저장소 추가
git remote add gitsubtree git@github.com:rhostem/gitsubtree.git
git remote add <원격 저장소의 이름> <원격 저장소의 주소>
2. 새로운 원격 저장소의 브랜치를 서브트리로 추가.
git subtree add --prefix lib gitsubtree main
git subtree add --prefix <클론할 폴더> <원격 저장소의 이름> <브랜치 이름>
3. 서브트리를 원격에서 내려받기(pull)
서브트리의 원격에 올라온 커밋을 내려받는다. 서브트리를 추가하는 명령어와 큰 차이가 없으며, 자동으로 병합(merge)이 진행된다.
git subtree pull --prefix lib gitsubtree main
커맨드라인에서 실행 후 병합이 완료되면 에디터가 열리면서 커밋 메시지의 저장을 요구할 수도 있다.
4. 서브트리를 원격에 올리기(push)
상위 저장소에서 서브트리의 소스를 직접 수정 후 변경사항을 커밋하고 원격에 푸시할 수 있다.
git subtree push --prefix lib gitsubtree main
https://blog.rhostem.com/posts/2020-01-03-code-sharing-with-git-subtree
blog.rhostem.com
프론트엔드 웹 개발 기술 블로그
blog.rhostem.com
https://zzang9ha.tistory.com/294
[Git / GitHub] - git subtree 명령어
안녕하세요? 이전에 운영하던 블로그와 소스코드를 관리하는 GitHub가 따로 있습니다. 네이버 블로그 GitHub ✔ Git - subtree 안녕하세요, 이번에 정리할 내용은 git에서 subtree를 활용한 레포지토리 안
zzang9ha.tistory.com