← 전체 글로 돌아가기

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 하나에 의존하기보다는, 팀의 규모와 배포 전략에 맞춰 리모트를 추가하는 게 장기적으로 더 효율적이다.