황찌옹
정리왕옹옹
황찌옹
GitHub Contribution
Loading data ...
  • 분류 전체보기 (158)
    • [ 알고리즘 ] (96)
      • Implementation (24)
      • Brute Force (6)
      • String (4)
      • Greedy (14)
      • DFS, BFS (13)
      • Back Tracking (4)
      • Sort & Binary Search (6)
      • DP (8)
      • Shortest Path (5)
      • Hash (3)
      • Stack, Queue (4)
      • Heap (1)
      • Tree (1)
      • Mathematics (1)
      • Ad-Hoc (1)
      • 기타 (COS Pro, etc) (1)
    • [ 언어 및 문법 ] (23)
      • Python (5)
      • C, C++ (13)
      • SQL (1)
      • 공통 개념(CS) (4)
    • [ Error ] (21)
      • Radiomics Feature Extraction (6)
      • CT Skin Segmentation (12)
      • etc (3)
    • [ Git ] (7)
    • [ 환경 설정 및 기타] (6)
    • [ 공부 ] (2)
      • AI, ML (0)
      • Computer Vision (0)
      • Image Processing (1)
      • QT (0)
      • AWS (1)
      • 의료 (0)
    • [ 포트폴리오 ] (1)
      • 🙋‍♀️자기 소개🙋‍♀️ (1)
      • 프로젝트 (0)
      • 공모전 (0)
      • 자격증 (0)
      • 대내외활동 (0)
      • 논문 (0)
      • 교육 봉사 (0)
    • [ 취준 ] (2)
      • 채용 설명회, 직무 상담 (1)
      • 취준 후기 (1)

블로그 메뉴

  • ❤️깃허브❤️

인기 글

태그

  • git
  • 씹어먹는C++
  • numpy
  • config
  • c++
  • pyplot
  • Cloud
  • tensorflow
  • cs
  • Python
  • 모두의코드
  • Anaconda
  • aws
  • Visual Studio
  • OpenCV
  • cos pro
  • SQL
  • keras
  • QT
  • configuration

최근 댓글

최근 글

전체 방문자
오늘
어제
hELLO · Designed By 정상우.
황찌옹

정리왕옹옹

[ Git ]

[Git] git submodule로 한 main repo에 여러 sub repo들 관리하기

2022. 8. 14. 02:49

 

< 기존 repo를 최상위로, sub module들 추가하기 >

[ 1. 최상위 repo가 될 기존 repo의 내용들을 새로운 repo 파서 옮기기 ]

  • git clone --mirror : 기존 원격 repo를 로컬로 복제해오기
    image

    image: 기존원격레포명.git 폴더 생성
  • cd ~.git : 복제된 git 폴더로 이동
  • git remote set-url --push origin [new remote repo url] : 새로운 원격 repo의 url 주소 연결
    image
  • git push --mirror & git remote -v : mirror 한 내용 로컬에서 원격으로 push 후 정상적으로 복사 되었는지 전, 후 주소 확인
    • fetch : 기존 원격 repo로부터 필요한 파일을 다운 받음
    • push : push할 새로운 원격 레포
      image

cf. issue, wiki 등은 git의 요소가 아니므로, mirror 시에 같이 옮겨지지 않으므로 수동으로 옮겨줘야 함!

 

[ 2. 또 다른 모듈이 될 새 repo가 있다면 파서 올리기 ]

 

[ 3. 기존 로컬 repo에 연결돼있던 원격 repo와 연결을 끊고, 새로운 repo에 연결하기 ]

  • git remote remove & git remote add
    image

 

[ 4. 기존 repo의 issue들 옮기기 ]

  • 기존에 만들어 둔 label들 먼저 생성해둔 후 옮기고 나서 다시 태그

 

[ 5. 기존 원격 repo의 기록들 싹 다 비우기 ]

https://yoshikixdrum.tistory.com/200

  • 기존 원격 repo를 clone 받아와서 .git 폴더를 포함한 모든 파일들 삭제 후
  • 빈 폴더 상태에서 다시 git init & add & commit & push

 

[ 6. main이 된 기존 원격 repo에 add submodules ]

https://www.devhak.com/blog/git-submodule

image

  • submodule 2개 추가해준 후 commit 해보면 .gitmodules 파일은 100644지만, 나머지 두 폴더는 160000으로 다르게 특수한 파일로 인식
    • git에게 있어 160000모드는 일반적인 파일이나 디렉토리가 아니라 특별하다는 의미!

 

[ 결과 ]

imageimage

  • local-main에는 remote-sub repo들에 반영된 내용들을 받아오도록 되어있고, local-sub과는 별개!
  • 그리고 각 submodule들은 서로 수정사항들을 알 수 없는 독립적인 관계!

 


 

< sub module 수정 및 main에 업데이트하기 (수동) >

[ 순서 : submodule update 내용 remote push -> local main update -> remote main push ]

  1. 로컬에서 local-sub 코드 수정 후 remote-sub에 push
  2. git submodule update --remote : local-main에서 remote-sub 수정사항 update
  3. git add & git commit & git push : remote-main으로 수정사항 push

cf. 중간에 git config status.submodulesummary 후 git status 해보면 수정 사항에 대한 commit message 확인 가능!

 

 

 

저작자표시 (새창열림)

'[ Git ]' 카테고리의 다른 글

[Git] Git Clone vs Git Pull  (0) 2022.08.12
[Git] 새로운 pc에서 기존 git 관리 프로젝트 옮겨 사용하기  (0) 2022.08.12
[Git] .gitignore으로 .ipynb_checkpoints 제거하기  (0) 2022.08.12
[Git] 이전에 commit한 message 수정하기  (0) 2022.08.12
[Git] .gitignore 설정하기  (0) 2022.08.12
    황찌옹
    황찌옹
    다 정리해버리꺼야

    티스토리툴바