요약
## 설정
remote_1=example.com/project.git
remote_2=example2.com/project.git
remote_3=example3.com/project.git
git remote add all "${remote_1}"
git remote set-url --add all "${remote_2}"
git remote set-url --add all "${remote_3}"
## 사용
git push all # [--all] <-- 요건 모든 브랜치를 push 하려할 때만
이슈
git 을 사용하다보니 리모트 저장소를 여러개 두는 경우가 발생했다. 그러다보니 로컬에서 소스코드가 변경되면 여러 곳의 리모트에 각각 push 를 해줘야했고 이걸 한 번에 해줄 수 있는 방법이 있을까 찾아봤다.
해결
‘all’ 이라는 remote 를 등록하고 set-url --add
로 여러개의 리모트를 등록하는 방법을 찾게 되었다.
## 리모트 저장소 리스트 (https of ssh 경로)
remote_1=example.com/project.git # 메인 저장소 (fetch 도 포함)
remote_2=example2.com/project.git
remote_3=example3.com/project.git
git remote add all "${remote_1}"
git remote set-url --add all "${remote_2}"
git remote set-url --add all "${remote_3}"
git remote -v
명령어로 정상적으로 등록이 되었는지 확인한다.
$ git remote -v
all example.com/project.git (fetch)
all example.com/project.git (push)
all example2.com/project.git (push)
all example3.com/project.git (push)
...
이후에 git push all
명령어를 통해서 모든 리모트 저장소에 일괄로 push 가 가능하다. 모든 브랜치를 한번에 push 하려면 --all
옵션을 추가로 입력하면 된다.
이 설정은 .git/config
파일에서 직접 수정도 가능하다.
...
[remote "all"]
url = example.com/project.git
fetch = +refs/heads/*:refs/remotes/all/*
pushurl = example.com/project.git
pushurl = example2.com/project.git
pushurl = example3.com/project.git
...