git repository 안에 repository 관리

2023. 11. 23. 17:41·알쓸신잡
git push origin master 혹은 main

이번에는 자신의 repository안에 repository를 넣어보도록 하겠다.

repo들이 너무 많아져서 정리가 안 되는 느낌이어서 시도해 봤다!!

 

우선 github의 subtree라는 것을 이용한다. 

 

우선 메인 repo를 parents repo라고 지칭하고, 그 안에 폴더형식으로 넣을 repo들을 child repo라고 본 글에서 지칭하겠다.

 

1. Clone parents repo

우선 자신의 local에 parents repo를 clone 해준다.

git clone {ParentsRepo}

그러면 무슨 ` 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}

 

728x90

'알쓸신잡' 카테고리의 다른 글

딥러닝 NVIDIA GPU / cuda 사용하기  (3) 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
'알쓸신잡' 카테고리의 다른 글
  • 딥러닝 NVIDIA GPU / cuda 사용하기
  • scikit-learn-intelex
  • [Github README 꾸미기]
  • Git pull request 및 협업
창빵맨
창빵맨
  • 창빵맨
    Let's be Developers
    창빵맨
    로그인/로그아웃
  • 전체
    오늘
    어제
    • 분류 전체보기 (481)
      • 알쓸신잡 (88)
      • ML & DL (85)
        • Computer v.. (22)
        • NLP (22)
        • 파이썬 머신러닝 완.. (3)
        • 개념정리 (38)
      • 리눅스 (21)
      • 프로젝트 (29)
        • 산불 발생 예측 (6)
        • 음성비서 (12)
        • pdf 병합 프로그.. (0)
        • 수위 예측 (5)
        • 가짜 뉴스 분류 (5)
        • 전력사용량 예측 (1)
      • 코딩테스트 (217)
        • 프로그래머스[Pyt.. (17)
        • 프로그래머스[Fai.. (3)
        • 백준[Python] (160)
        • 이것이취업을위한코딩.. (18)
        • 파이썬 알고리즘 (19)
      • 데이터분석실습 (25)
        • 데이터 과학 기반의.. (18)
        • 헬로 데이터 과학 (7)
      • 메모장 (0)
      • 잡담 (4)
  • Blog

    • 🏠 Home

    ✏️글쓰기
    💻 관리

    Personal

    GITHUB
    Instagram
  • 공지사항

  • 인기 글

  • 태그

    이것이취업을위한코딩테스트다
    이코테
    dp
    그리디
    BFS
    이분탐색
    백준
    나동빈
    파이썬
    DFS
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
상단으로

티스토리툴바