Git
Git의 origin 말고도 remote를 여러 개 써야 할 때가 있다
여러 리모트 저장소를 관리하면 코드 배포 전략과 백업이 훨씬 유연해진다.
Git을 배우면 보통 origin 하나만 사용한다. git push origin main, git pull origin main 이 정도면 충분하다고 생각한다. 하지만 팀이 커지고 배포 전략이 복잡해지면 여러 리모트가 필요해진다.
Remote란 무엇인가
remote는 원격 저장소의 별칭이다. 같은 코드베이스를 여러 서버에 관리할 수 있다.
# 현재 설정된 리모트 확인
git remote -v
# 출력 예
# origin https://github.com/my-company/app.git (fetch)
# origin https://github.com/my-company/app.git (push)
여러 리모트가 필요한 경우
1. 백업 저장소
메인 저장소가 문제가 생길 경우를 대비해서 다른 서버에도 복사본을 둔다.
# 백업 저장소 추가
git remote add backup https://gitlab.com/my-company/app.git
# 둘 다에 푸시
git push origin main
git push backup main
2. 배포 전용 저장소
프로덕션 서버에 직접 배포하기 위한 bare repository를 둘 수 있다.
# 배포 리모트 추가
git remote add production user@prod-server:/var/git/app.git
# 배포할 때만 푸시
git push production main
3. 여러 팀의 협업
같은 프로젝트를 여러 팀에서 관리할 때, 각 팀의 저장소를 리모트로 추가한다.
git remote add team-a https://github.com/team-a/app.git
git remote add team-b https://github.com/team-b/app.git
# 팀 A의 변경사항 가져오기
git fetch team-a
git merge team-a/main
리모트 관리하기
# 리모트 이름 바꾸기
git remote rename origin github
# 리모트 URL 변경
git remote set-url origin https://github.com/new/repo.git
# 리모트 삭제
git remote remove backup
# 리모트 상세 정보 보기
git remote show origin
다중 리모트로 푸시하기
모든 리모트에 동시에 푸시해야 할 때는 설정을 추가한다.
# .git/config 파일을 편집하거나 다음 명령으로
git remote set-url --add --push origin https://github.com/my-company/app.git
git remote set-url --add --push origin https://gitlab.com/my-company/app.git
# 이제 git push origin만 해도 둘 다 푸시된다
빌드 결과 확인
여러 리모트를 사용할 때는 실제로 배포되는 코드가 맞는지 확인해야 한다.
# 로컬 브랜치와 리모트 브랜치 비교
git log origin/main --oneline -n 5
git log backup/main --oneline -n 5
# 차이가 있는가?
git diff origin/main backup/main
Git은 단순해 보이지만, 제대로 사용하면 배포 전략을 훨씬 유연하게 구성할 수 있다. origin 하나에 의존하기보다는, 팀의 규모와 배포 전략에 맞춰 리모트를 추가하는 게 장기적으로 더 효율적이다.