Just Do IT!

[Github] 여러 Repository 하나로 합치기 본문

Git & Github

[Github] 여러 Repository 하나로 합치기

MOON달 2023. 1. 16. 20:09
728x90
여러 Repository를 하나의 Repository로 합치기

깃허브에 private으로 공부했던 것들을 올려두고 있었는데 점점 레파지토리가 많아지고 지저분(?)해지는 것 같아서

하나로 합치기로 하고 실행에 옮겼다. 우선 옮긴 건, react native 관련한 레파지토리 하나로 모으기.

예전에 벨로그에 작성했던 내용을 그대로 실행했는데 다행히 이번에는 오류 없이 한 번에 성공...!

나중에도 써먹을 것 같아서 이제는 쓰지 않는 벨로그 대신 티스토리에도 옮기기로 마음 먹었다.

 

 

 

 

 

1. 하나로 합칠 Repository 생성

기존의 repository들을 합칠 새로운 repository를 생성해야 한다.

합치기 전에 커밋 기록이 없으면 오류가 생기는데, 새로운 레파지토리를 생성할 때 add ReadMe.md 를 체크하면 자동으로 inital commit이 생성되니까 굳이 커밋을 할 필요가 없어진다. (약간의 팁)

그렇게 해서 리드미가 자동적으로 생성된 새로운 repository가 생긴다.

 

 

 

 

 

2. 로컬 저장소에 clone
$ git clone [새로운 repository 주소]

늘상 사용하는 git clone을 이용해 새로 만든 repository를 로컬 저장소에 clone해온다.

 

 

 

 

 

3. 기존 Repository들을 합치기

원래 clone한 뒤에 커밋 기록을 남기기 위해 임의로 commit을 하고 push를 해야 하지만 맨 처음에 리드미를 체크했기 때문에 자동으로 커밋 기록이 하나 있다. 그러므로 그건 생략!

 

이제 기존 repository를 옮기면 된다.

터미널에서 아래 명령어를 순서대로 입력하면 된다.

 

$ git subtree add --prefix=기존레포지토리명 기존레포지토리주소 기존메인브랜치명

혹시나 오류가 생긴다면, 브랜치명이 달라서 생긴 오류니까 기존의 레파지토리의 브랜치를 확인해야 한다.

 

실제로 내가 합친 기록

이런식으로 오류 없이 성공적이라면 위의 화면처럼 'Added dir'이 나와야 한다.

 

 

 

 

 

 

 

4. 원격저장소에 push
$ git push origin HEAD:main --force

위의 사진처럼 성공적으로 레파지토리를 합쳤다면 원격저장소에 push하면 끝이다.

 

--force 명령어를 쓴 이유는 충돌을 방지하기 위해서이고 굳이 쓰지 않아도 된다.

이렇게 터미널에서 성공적으로 push하면 원격 저장소에 합쳐져있는 레파지토리를 볼 수 있다.

 

 

react native 관련된 레파지토리를 모아놓은 하나의 repository이다.

레파지토리들을 옮길 때 이전의 커밋 기록도 합쳐지기 때문에 커밋 기록들을 신경쓰지 않아도 된다.

그리고 하나로 합친 이후에 원래 있던 repository를 삭제해도 아무 지장이 없다. 삭제해도 된다...!

 

 

 

 

 

 


예전에 했을 때는 엄청난 삽질과 오류의 반복 끝에 했던 것 같은데 이번에는 그래도 예전에 작성했던 글 덕분에

오류 없이 간단하게 합친 것 같다. 역시 기록의 힘이란...

벨로그에 그거 딱 하나 올리고 티스토리로 옮겨왔는데, 여기서 주로 쓰다보니 여기에도 기록해야 할 것 같아서 조금 더

추가해서 올린다. 나중에 또 지저분하게(?) 깃허브를 쓰면 다시 이 글로 돌아와서 참고해야겠다.