2023년 1월 12일에 작성한 이전 블로그 글을 옮겨왔습니다.
흔한 상황은 아니지만, 가끔 하나의 로컬 소스코드로 두 개의 원격 저장소를 운영해야 할 때가 있습니다. 저도 이런 상황을 마주했을 때 꽤 헤맸던 기억이 나서, 그때 정리해둔 내용을 공유해봅니다.
단순히 두 원격지를 등록하고 운영하면 될 것 같았는데, 서로 히스토리가 다르면 예상치 못한 문제들이 생기더라고요.

🪞 미러 저장소 만들기
가장 먼저 해야 할 일은 origin 저장소를 히스토리까지 통째로 복사하는 것입니다. Git에는 미러 저장소를 만드는 기능이 있는데, 이걸 활용하면 모든 브랜치와 커밋 이력을 새 원격지로 옮길 수 있어요.
예를 들어 이런 상황이라고 가정해볼게요.
- origin 원격지:
https://github.com/your-name/my-origin.git - copy 원격지:
https://github.com/your-name/my-copy.git(새로 만든 빈 저장소)
먼저 로컬에 미러를 만듭니다. --mirror 옵션이 핵심이에요.
$ git clone --mirror https://github.com/your-name/my-origin.git
그다음 새 원격지로 푸시합니다.
$ cd my-origin.git # .git이 붙는다는 점 주의하세요!
$ git remote set-url --push origin https://github.com/your-name/my-copy
$ git push --mirror
이렇게 하면 origin의 모든 것이 copy로 복사됩니다.
🔀 두 리모트 사이에서 작업하기
이제 copy 저장소에서 작업하다가 origin으로 옮기는 흐름을 살펴볼게요. 처음에 이 부분이 좀 헷갈렸는데, 리모트 이름을 명확하게 정리해두니까 훨씬 수월해졌습니다.
# copy 저장소를 클론
$ git clone https://github.com/your-name/my-copy.git
# 기본 리모트 설정을 정리하고 새로 등록
$ git remote rm origin
$ git remote add copy https://github.com/your-name/my-copy.git
$ git remote add origin https://github.com/your-name/my-origin.git
# 잘 설정됐는지 확인
$ git remote -v
copy https://github.com/your-name/my-copy.git
origin https://github.com/your-name/my-origin.git
이제 feature 브랜치를 만들어서 작업해봅시다.
$ git remote update # 원격 브랜치 최신 상태 가져오기
$ git switch main
$ git checkout -b feature
# ... 코딩 ...
$ git commit -m "✨ my feature"
$ git push copy feature # copy에 먼저 푸시
$ git push origin feature # origin에도 푸시
앞으로 이 브랜치에서 origin을 기본 리모트로 쓰고 싶다면 -u 옵션을 활용하면 됩니다.
$ git push -u origin feature
🎯 추적 브랜치 설정하기
feature 브랜치가 origin/feature를 추적하는지, copy/feature를 추적하는지 명확하게 해두면 작업이 훨씬 편해집니다. 저는 이 부분을 나중에 알게 돼서 처음엔 좀 헤맸어요.
# 추적 브랜치 추가
$ git remote set-branches --add origin feature
# 설정 확인
$ cat .git/config
[remote "origin"]
url = <repo_url>
fetch = +refs/heads/*:refs/remotes/origin/*
fetch = +refs/heads/feature:refs/remotes/origin/feature
추적 브랜치를 변경하는 것도 간단합니다.
$ git branch -u origin/feature
# 현재 추적 중인 브랜치 확인
$ git branch -vv
feature b37bc773 [origin/feature] "✨ my feature"
이렇게 설정해두면 상황에 따라 추적 브랜치를 바꿔가며 유연하게 작업할 수 있습니다. 자주 쓰는 패턴은 아니지만, 알아두면 언젠가 유용하게 쓸 날이 올 거예요.