🤔문제 상황
최근 전공 수업에서 과제를 수행하면서 레포지토리 여러 개 만들었다.
종강하고 나니 이 레포들을 그냥 하나로 합쳐버리고 싶다는 생각이 들었다.
참고로, 나도 Git과 Github 사용에 능숙한 것은 아니라 공부도 하는 겸 진행해 보았다🤍
😁해결 방법
1. 새로운 Repo 만들기
하나의 Repository 안에서 branch 별로 fetch하여 불러오는 방식을 사용하고자 했다.
먼저 이를 위해서 새로운 Repo 하나를 만든다.
나는 컴파일러 과목을 위한 Repo이므로 compiler-lex라는 이름으로 만들었다.
클론할 아무 폴더에 들어가서 다음과 같이 원격 저장소를 로컬에 복제한다.
git init
git clone <새로 만든 레포 주소>
이제, 각 레포지토리를 하나의 레포지토리에 서로 다른 브랜치로 병합해보자.
그 전에, git remote 와 fetch, checkout, push 등의 기본적인 명령어는 알고 있으면 좋다.
검색하면 다양한 자료가 나오지만, Git에 익숙하지 않은 사람들을 위해 간단하게 설명해보도록 하겠다.
git remote -v를 입력하면 현재 어떤 원격 저장소가 등록되어 있는지 알 수 있다.
아마 연결한 저장소가 없다면 아무것도 뜨지 않을 것이다.
우리는 총 3개의 Repo를 합칠 것이므로 3개의 저장소를 연결하게 될 것이다.
2. 원격 저장소 추가 및 페치
다음과 같은 명령어를 사용해 연결할 첫번째 Repo를 원격으로 추가하고 fetch 한다.
fetch는 원격저장소의 내용을 가져오는데 사용되는 명령어이다.
git remote add repo1 <가져올 첫번째 레포 주소>
git fetch repo1
repo1이라는 이름으로 첫번째 레포 주소를 가져왔다.
아마 다시 git remote -v를 입력하면 원격 저장소가 잘 연결되었음을 확인할 수 있을 것이다.
3. 브랜치로 체크아웃
그럼 이제 연결하고 fetch도 했으니 새로운 branch로 이동해보자.
새로운 브랜치를 생성하고 첫 번째 레포지토리의 main 브랜치 내용을 체크아웃해보자.
체크아웃 할 때 -b 옵션을 입력해주면 브랜치를 생성해주면서 이동해주기 때문에 편리하다.
git checkout -b hw1 repo1/main
쨘! 나는 hw1라는 이름으로 새로운 브랜치를 만들었다.
하지만 브랜치만 만들었고 새로 fetch한 내용은 아직 업로드하지 않았다.
지금까지 변경한 사항은 push 명령어를 통해 업로드할 수 있다.
4. 최종적으로 push하기
git push origin hw1
origin은 새로 만든 Repo의 이름,
hw1은 불러올 기존 Repo의 branch 이름이라고 생각하면 편하다.
아래는 hw2 브랜치도 같은 방식으로 불러온 예시 코드이다:)
5. 완성❕
h3까지 총 3번 진행하면 하나의 레포에 브랜치별로 3개의 레포를 잘 합쳐진다!
이렇게 합쳐놓으면 같은 전공 수업 과제를 하나의 저장소에서 볼 수 있고,
가독성도 좋고 레포를 깔끔하게 관리할 수 있다!!
'Git & Github' 카테고리의 다른 글
[Github] 내 개발 시간을 프로필에 추가해보자 (0) | 2024.09.19 |
---|---|
[Git & Github] 원격 저장소 branch 가져오기 (0) | 2024.07.12 |
[Git Bash] 터미널 입력 중 CRLF 줄바꿈 이슈 해결하기 (0) | 2024.03.30 |
[Git] fatal: refusing to merge unrelated histories 문제 해결하기 (0) | 2024.03.21 |