[Github] Repository들 깔끔하게 하나로 합치기

Jemma·2022년 2월 2일
4

Git / Github

목록 보기
1/2
post-thumbnail

1. 새로운 Repository 생성


github 로그인 > Your Repositories 에 들어가면 내가 만들거나 속해있는 레포지토리들을 확인할 수 있습니다.
New 버튼을 눌러 기존의 레포지토리들을 합칠 새로운 레포지토리를 생성합니다.




2. 새로운 Repository를 로컬저장소로 clone


저는 Project 라는 이름으로 레포지토리를 새로 생성했습니다.
생성한 레포지토리 메인으로 가서 해당 레포지토리의 주소를 복사한 후에 로컬 저장소로 클론(clone)해 옵니다.

이때 클론할 위치는 로컬저장소가 있는 위치여야 합니다.
(로컬저장소가 없다면, git init 으로 저장소를 만들어 주세요)

git clone #https://github.com/JemmaJeon/Project.git

git clone 하나로 합칠 레포지토리 주소 를 입력해주면 해당 로컬 저장소로 생성한 레포지토리가 들어옵니다.




3. clone 한 Repository에 기록 남기기


새로 생성한 레포지토리에 아무런 기록이 없다면 기존의 레포지토리들을 곧바로 합칠 수 없습니다. 해당 레포지토리의 생성 여부가 확실하지 않기 때문에 아래와 같은 오류가 발생합니다.

Working tree has modifications. Cannot add.


이 문제를 해결하기 위해, 터미널을 켜서 clone한 레포지토리에 commit이나 push를 했다는 기록을 남겨줍니다. 커밋할 사항이 없어도 메세지만 들어가면 커밋이 되니 기록은 자동으로 남게 됩니다.
(기존에 이용하던 로컬저장소에서 커밋을 시도하는 경우라면 경우가 다르니, 커밋 전 사항들을 반드시 확인해 주세요)

git add .
git commit -m '아무 메세지'




4. 기존의 Repository들을 새로 생성한 Repository로 합치기


합치고자 하는 레포지토리들의 주소를 복사해 옵니다.
이때 가장 왼편에 메인 가지(Branch) 명까지 반드시 확인해 주세요. 레포지토리를 생성할 때 보통 자동으로 main 혹은 master로 생성이 되지만 다른 이름으로 생성했을 수도 있습니다.

이때 메인 브랜치 이름을 잘못 입력하면, 아래와 같은 오류가 발생합니다.

fatal: couldn't find remote ref 브랜치명

혹시 같은 오류 내용을 보셨다면, 메인 브랜치 이름을 잘못 입력한 경우가 아닌지 잘 확인해 보세요.


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

# 예시
git subtree add --prefix=Workspace https://github.com/JemmaJeon/Workspace.git master

정상적으로 작업이 완료된 경우라면 위와같은 문구를 볼 수 있습니다.
이제 같은 방법으로 남아있는 것들을 새로 생성한 레포지토리 가지로 합치면 됩니다.




5. 하나로 합친 Repository 원격저장소로 push


남아있는 레포지토리들을 하나로 붙이는 데 성공했다면 이제 원격저장소(github)로 저장된 내용들을 push 해서 업데이트하면 됩니다.

원격저장소로 push를 하기 위해서는 clone을 해온 것만으로는 안 되므로, 먼저 remote로 연결이 되어있어야 합니다.


git push origin HEAD:main --force

--force 명령어를 쓴 이유는, 충돌을 방지하기 위해서입니다. 리모트 변경 사항을 체크하지 않고 곧바로 저장소로 푸시하려고 하면 아래와 같은 충돌이 발생합니다.

리모트에 로컬에 없는 사항이 들어 있으므로 업데이트가 거부되었습니다

어쨌든 새로 생성한 레포지토리는 생성 후 처음 commit 혹은 push한 내역만 가지고 있기 때문입니다.
(새로운 레포지토리라 덮어써도 상관없어서 push를 강행했지만, 사용하던 레포지토리에 다른 레포지토리들을 합치는 경우에는 다른 방법을 찾아야 합니다)

결국 우여곡절 끝에 git 레포지토리 병합까지 성공했습니다.




profile
꽃길만 걸어요 우리

2개의 댓글

comment-user-thumbnail
2023년 1월 7일

안녕하세요?
병합이후 과거 레포지토리는 삭제해도 과거 잔디가 날라가진 않나요 ?

답글 달기
comment-user-thumbnail
2023년 3월 2일

That's right! I strongly agree with you. Can you rely me? I want to ask you some questions. I'm delighted if you can do that. In addition, when you'r free, why don't you enjoy color tunnel? It's so fun!

답글 달기