Github

Github - 여러개의 Repository 하나로 합치기

행인3 2022. 3. 2. 17:37

개인적으로 공부하던 코드들을 Git에 업로드하는데, 시간이 지날수록 수많은 Repositoy들이 생겨 관리가 어려워 상위 Repository 하나를 생성하여 지금까지 공부했던 Repository 들을 하위로 넣어 관리하려고 합니다.

 

1. 로컬 저장소 생성

우선 바탕화면에 "Github"이라는 폴더를 하나 생성 한 후 Mac의 터미널에 들어갑니다.

터미널에서 바탕화면에 생성한 폴더 경로로 이동합니다.

cd Desktop/Github

해당 위치에는 로컬저장소가 없는 위치이기 때문에 아래 명령어로 로컬 저장소를 생성해줍니다.

 

git init

2. Repository 생성

본인의 https://github.com/에 로그인하여 여러 Repository들을 담아 관리할 Repository를 생성해줍니다.

"New" 버튼을 누르거나 오른쪽 상단 "+" 버튼을 눌러 "New repository"를 선택하시면 새로운 Repository를 생성할 수 있는 화면으로 이동합니다.

Repository name에 적절한 이름을 넣어주고, 필요에 따라 Public 또는 Private을 선택하고, Add a README file도 체크해주도록 하겠습니다. 그리고 "Create repository" 버튼을 누릅니다.

3. 생성한 Repository 로컬 저장소에 clone

다시 터미널로 돌아가 열어 로컬 저장소(cd Desktop/Github 위치)에 clone 하도록 하겠습니다.

git clone https://github.com/hanginthree/SampleCode.git

clone 뒤에 오는 저장소 https:// 경로는 생성한 Repository의 상세 화면에서 "Code" 버튼을 눌러 확인할 수 있습니다.

3.1 fatal: Authentication failed 에러

fatal: Authentication failed for 'https://github.com/hanginthree/SampleCode.git/'

만약 clone에 실패하고 위와 같은 에러가 발생한다면 본인의 https://github.com/에 들어가 오른쪽 상단 "+" 버튼을 눌러 "Settings"에 들어갑니다.

Settings > Developer settings > Personal access tokens을 선택하여 들어갑니다. "Generate new token"을 눌러 새로운 토큰을 생성합니다.

Note와 Expiration을 적절하게 설정하고 repo, admin:repo-hook, delete_repo를 선택 후 "Generate token" 버튼을 눌러줍니다.

그러면 위 이미지 처럼 토큰이 생성되었다고 나타나는데 여기서 꼭 저 토큰 값을 복사하여 메모장 등 붙여 넣기 하여 기록하도록 합니다.

! 다시 확인 할 수 없습니다.

그다음 다시 터미널로 돌아가 clone 명령어를 실행하고 ID에는 계정의 이메일 주소를, 비밀번호에는 방금 생성한 저 토큰 값을 넣으면 에러 없이 정상적으로 clone에 성공합니다.

4. 아무거나 commit 하기

빈 Repository에 아무런 기록이 없으면 기존의 Repository를 바로 합칠 수 없습니다. 그렇기 때문에 아무거나 커밋을 하나 해주도록 하겠습니다.

git add .
git commit -m 'any'

'any'에 그냥 아무거나 입력하시면 됩니다.

5. Repository 옮기기

이제 상위 Repository는 생성이 되었고 그 아래에 넣을 기존 Repository를 이동해보도록 하겠습니다.

터미널을 열어 경로는 새로 생성한 Repository의 로컬 저장소인 "cd Desktop/Github/SampleCode"로 이동합니다.

git subtree add --prefix=Repository이름 Repository주소 메인브랜치이름

ex>
git subtree add --prefix=Diary https://github.com/hanginthree/Diary.git main

여기서 메인 브랜치 이름은 Repository 생성 시 별도로 설정하지 않았다면 main 혹은 master입니다. 브랜치 명이 잘 못 입력되는 경우 에러가 나니 잘 확인해야 합니다.

6. Push 하기

Repository를 다 옮겼다면 이제 github로 push 합니다.

git push origin HEAD:main --force

 

 

이렇게 하면 개별로 생성되어 있던 여러 Repository를 SampleCode라는 Repository 안에 하위 Repository로 넣어 관리할 수 있습니다.