git push origin master 혹은 main
이번에는 자신의 repository안에 repository를 넣어보도록하겠다.
repo들이 너무 많아져서 정리가 안되는 느낌이어서 시도해봤다!!
우선 github의 subtree라는 것을 이용한다.
우선 메인 repo를 parents repo라고 지칭하고, 그 안에 폴더형식으로 넣을 repo들을 chile repo라고 본 글에서 지칭하겠다.
1. Local에 parents repo 복사
우선 자신의 local에 parents repo를 clone해준다.
git clone <부모repo 주소>
그러면 무슨 ` warning: You appear to have cloned an empty repository`라는 에러가 뜰텐데 단순 빈 repo를 복사했다는 오류이다.(이미 기존 repo에 하는거면 오류 안뜸)
2. initial commit
만약 parent repo가 빈 repo라면 우선 아래 명령어를 통해 inital commit을 진행해준다.
빈 repo가 아니라면 건너뛰어도 상관없다.
3. subtree 추가
git subtree add --prefix=<폴더 이름> <자식repos 주소> <branch 이름>
이번에는 자기가 넣고자하는 자식repo를 어떤 폴더이름으로 추가할지를 ,`폴더이름`에 적어주고, `자식repo주소`도 채워주고 해당 자식 repo의 어떤 브랜치를 넣어줄지를 `branch이름`에 넣어준다.
ex) git subtree add --prefix=test-name https://github.com/Bae-ChangHyun/capsule-render.git master
위에서 사용한 명령어 `git subtree`는 저장소를 합치는데는 사용하는 명령어로, 원격저장소의 데이터를 fetch한 후 원하는 경로에 추가해주는데 이때 기존의 commi history도 유지합니다. 이후 기존의 repo는 삭제해도 상관없다.
4. subtree 추가 반복, push
이제 자기가 올리고싶은 자식repo전체를 3번의 방식으로 전부 추가해준다.
다 올린후에는, 아래 명령어를 통해 이제 parent repo에 push를 진행해준다.
git push origin <paren repo branch name>
이렇게 되면 이제 parent repo안에 폴더형식으로 각 repo들이 들어간 것을 확인할 수 있다!
5. 이후에 이러한 subtree로 이동한 repo들을 관리하기위해서는 아래와 같은 방법을 사용하면 된다.
# 메인 프로젝트 git clone
git clone {parent repo}
# 현재 프로젝트에 subtree로 사용할 원격 저장소 추가
git remote add {child repo} {child repo URL}
# 원격 저장소 확인
git remote -v
# subtree 추가
# --prefix 옵션으로 서브트리를 클론할 디렉토리를 지정한다
git subtree add --prefix={local directory} {repo} {branch}
# 서버트리를 pull, push 할 때는 prefix 옵션을 주어서 해당 서브트리가 위치한 디렉토리 정보와
# 저장소, 브랜치를 주어서 pull, push를 수행하도록 한다.
# pull
git subtree pull --prefix={local directory} {repo} {branch}
# push
git subtree push --prefix={local directory} {repo} {branch}
'알쓸신잡' 카테고리의 다른 글
딥러닝 NVIDIA GPU / cuda 사용하기 (1) | 2023.11.27 |
---|---|
scikit-learn-intelex (0) | 2023.11.24 |
[Github README 꾸미기] (0) | 2023.11.23 |
Git pull request 및 협업 (1) | 2023.11.20 |
Git 기본 명령어 (0) | 2023.11.20 |