< 기존 repo를 최상위로, sub module들 추가하기 >
[ 1. 최상위 repo가 될 기존 repo의 내용들을 새로운 repo 파서 옮기기 ]
git clone --mirror
: 기존 원격 repo를 로컬로 복제해오기
: 기존원격레포명.git 폴더 생성
cd ~.git
: 복제된 git 폴더로 이동git remote set-url --push origin [new remote repo url]
: 새로운 원격 repo의 url 주소 연결
git push --mirror
&git remote -v
: mirror 한 내용 로컬에서 원격으로 push 후 정상적으로 복사 되었는지 전, 후 주소 확인- fetch : 기존 원격 repo로부터 필요한 파일을 다운 받음
- push : push할 새로운 원격 레포
cf. issue
, wiki
등은 git의 요소가 아니므로, mirror
시에 같이 옮겨지지 않으므로 수동으로 옮겨줘야 함!
[ 2. 또 다른 모듈이 될 새 repo가 있다면 파서 올리기 ]
[ 3. 기존 로컬 repo에 연결돼있던 원격 repo와 연결을 끊고, 새로운 repo에 연결하기 ]
git remote remove
&git remote add
[ 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
- submodule 2개 추가해준 후 commit 해보면 .gitmodules 파일은 100644지만, 나머지 두 폴더는 160000으로 다르게 특수한 파일로 인식
- git에게 있어 160000모드는 일반적인 파일이나 디렉토리가 아니라 특별하다는 의미!
[ 결과 ]
- local-main에는 remote-sub repo들에 반영된 내용들을 받아오도록 되어있고, local-sub과는 별개!
- 그리고 각 submodule들은 서로 수정사항들을 알 수 없는 독립적인 관계!
< sub module 수정 및 main에 업데이트하기 (수동) >
[ 순서 : submodule update 내용 remote push
-> local main update
-> remote main push
]
- 로컬에서 local-sub 코드 수정 후 remote-sub에 push
git submodule update --remote
: local-main에서 remote-sub 수정사항 updategit 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 |