개발환경/git

multiple remote 여러개의 원격 저장소를 사용해서 멀티프로젝트 관리

autostar 2021. 4. 2.
반응형

개요 

필자는 사용하는 컴퓨터가 여러대 있다. 회사에서도 쓰고, 노트북으로 이동하면서도 쓰고, 집에서도 쓰고 리눅스를 셋팅하려는 컴퓨터도 있고, 이렇게 사용하면서 생각날때마다 다른 프로젝트를 진행하고 싶어서 알아보게 되었다.

아래부분의 한번에 푸시하기는 2중 백업하는 용도로 사용하면 될거 같고, 나같은 경우는 ftp 서버와(주로 백업 및 이용) 깃허브는 회사에서의 코드 하려고 한다. 

 

일단 이 글을 이해하려면 기본적인 깃 커맨드와 working flow 를 알아야 한다. 

 

바로들어가자면 

  • 멀티플 깃 저장소 정하기
    • git remote add all REMOTE-URL-1
  • 첫번째 푸시 url 등록하기 : git remote set-url --add --push all REMOTE-URL-1
  • 두번째 push 등록하기 : git remote set-url --add --push all REMOTE-URL-2
  • Git push all BRANCH로 브랜치를 모든 원격 저장소로 푸시 - BRANCH 에 정한 브랜치 이름을 넣는다
  • 여러개의 원격 저장소에서 풀을 할수 없다, 하지만 fetch 업데이트로 가능하다. git fetch --all

 

다중 리모트 추가하기

 

git init할때 리파짓토리를 시작한다

보통 원격저장소와 동기화 시키는 목적으로 사용하는데, 동기화 하기 위해서는 원격 저장소가 존재하는 곳을 명기해야한다.

 

첫번째 내 프로젝트에 원격저장소를 추가한다.

git remote add REMOTE-ID REMOTE-URL

 

관례적으로 origin은 original을 뜻한다. 보통 처음에 만드는 리파짓토리(원격저장소)

 

 

첫번째 리모트 추가하기 : github

git remote add origin git@github.com:깃허브아이디/리파짓토리이름.git

두번째 리모트 추가하기 : bitbucket
git remote add upstream git@bitbucket.org:아디/리파짓토리.git

 

 

리파짓토리의 이름은 고유하게 이름 짓는다.

예) origin 과 upstream 

 

 

 

멀티플 리모트를 추가할수 있지만, 

보통 프로젝트의 브랜치마다  하나의 리모트 브랜치를 추적할수 있게 설정될수 있다. 다음의 예로 브랜치로 리모트 브랜치를 추적하게 셋팅할수 있다.

 

#로컬브랜치를 바꾼다
git checkout BRANCH
# 로컬브랜치를 리모트브랜치 트랙하게 만든다
git branch -u origin/BRANCH

 

BRANCH 는 리모트 브랜치 보통 로컬과 같은 이름

 

 

원격 저장소 URL 바꾸기

 

이미 추가한 원격 저장소의 URL 을 바꾸고 싶다면, 아래의 커맨드를 따라한다.

 

#문법은 git remote set-url REMOTE-ID REMOTE-URL
git remote
set-url upstream git@foobar.com:깃아이디/리파짓토리이름.git

 

 

 

등록된 리모트 리스트를 보려면 

$git remote -v

으로 확인할수 있다.


origin            git@github.com:jigarius/toggl2redmine.git (fetch)
origin            git@github.com:jigarius/toggl2redmine.git (push)
upstream    git@bitbucket.org:jigarius/toggl2redmine.git (fetch)
upstream    git@bitbucket.org:jigarius/toggl2redmine.git (push)

 

 

리모트 지우기

더이상 필요하지 않은 리모트를 지우기

# git remote remove REMOTE-ID
git remote remove upstream

 

 

여러 리모트에 푸시하기

이번에는 한번의 푸시로 멀티플 리모트에 푸시하는 방법을 알아보자

 

리모트 아이디를 정하면 되는데 알기쉽게 all 을 설정하는것도 좋지만 개인의 아이디어에 따라 다른것으로 설정해도 좋다

 

# all 을 참조하게 url을 적어 만들기
git remote add all git@github.com:깃아이디/리파짓토리이름.git
# push URL 로 다시 등록하기
git remote
set-url --add --push all git@github.com:깃아이디/리파짓토리이름.git


#푸시URL 리모트에 추가하기. git push 하면 올라갈 주소를 적는다.
git remote
set-url --add --push all git@bitbucket.org:bitbucket아이디/리파짓토리이름.git

 

If you don’t want to create an extra remote named all, you can skip the first command and use the remote origin instead of all in the subsequent command(s).

all이라는 이름을 만들기 싫다면, 첫번째 명령어를 스킵하고 origin 이라는 커맨드를 사용하면 된다.

 

이제 한번의 커맨드로 모든 리모트에 push 할수 있다!

 

# BRANCH 를 자신의 브랜치로 바꿔준다.
git push all BRANCH

 

 

 

멀티플 리모트로 부터 풀하기

 

안타깝지만 풀은 안된다. 대신에 fetch 를 사용하자

git fetch --all

 

모든 리모트에서 정보를 가져올것이다.

 

최신버전의 특정 브랜치로 바꿀수 있다. 

 

#사용할 브랜치의 이름으로 바꾼다
git checkout BRANCH


#리셋
git reset --hard REMOTE-ID/BRANCH

 

반응형

'개발환경 > git' 카테고리의 다른 글

Git ignore 적용하기  (0) 2023.04.19

댓글