반응형
비슷한 성격의 두개의 레포지토리를 합치면서 그동안 해왔던 commit은 남기고 하나의 레포지토리로 만들고 싶어 찾고 시도한 방법을 정리했습니다. 제가 활용할 방법은 하나의 레포지토리를 다른 레포지토리로 복제하고 이를 병합하는 방식으로 commit은 유지하면서 레포지토리를 합쳤습니다.
우선, 하나의 레포지토리를 복제합니다. 여기서 첫 번째 레포지토리를 유지할 레포지토리입니다.
git clone <첫 번째 레포지토리 URL>
cd <첫 번째 레포지토리 디렉토리>
다음에는 두 번째 레포지토리를 추가합니다.
git remote add second-repo <두 번째 레포지토리 URL>
git fetch second-repo
두 번째 레포지토리의 커밋 히스토리를 보존하기 위해서 병합 전에 해당 레포지토리를 별도의 디렉토리에 넣어야 합니다.
git checkout -b second-repo-branch second-repo/<브랜치 이름>
mkdir <통합할 디렉토리 이름> # 예: "repo2"
git mv * <통합할 디렉토리 이름>
git commit -m "Move second repo into subdirectory"
그 다음에 첫 번째 레포지토리의 기본 브랜치로 돌아가고, 두 번째 레포지토리를 병합합니다.
git checkout <기본 브랜치 이름> # 일반적으로 "main" 또는 "master"
git merge --allow-unrelated-histories second-repo-branch
이렇게 병합하면서 충돌이 발생할 수 있는데, 이는 수동으로 해결했습니다. 수동으로 해결하고 나서 변경사항을 커밋과 푸시를 진행합니다. 그리고 병합하는 과정에서 생성한 불필요한 브랜치와 원격 저장소를 제거합니다.
git branch -d second-repo-branch
git remote remove second-repo
반응형
'Git & GitHub' 카테고리의 다른 글
GitHub Action으로 LeetCode 풀이 commit 자동화하기 | LeetCode Sync (0) | 2024.12.22 |
---|---|
[Git] Github에서 생성한 레포지토리 로컬에 가져오기 | PAT 인증, Authentication failed 해결 (0) | 2024.09.16 |
[Git] 으로 이진탐색으로 버그 찾기 | git bisect 활용 (0) | 2024.08.28 |
[Git] 깃 관련 학습할 수 있는 소스 모음 (0) | 2021.12.05 |
[Git] 깃 개념, 단어 정리 (repository, commit, branch, fork, push, pull, fetch, pull request) (0) | 2021.11.14 |