본문 바로가기

GIT

1. remote repository 와 upstream

들어가기 전 

 

Git 은 '분산 버전 관리 시스템' 중 하나이다. 버전 관리 시스템에서 '분산'이란 사용자가 원격 서버를 거치지 않고도 버전을 관리할 수 있다는 뜻으로, 중앙집중식인 서버-클라이언트 모델과 비교했을 때 갖는 가장 큰 특징이다.

 


 

Gi! != Github

 

Github는 Git을 바탕으로 하는 코드 호스팅 플랫폼이다. GitHub, GitLab 처럼 보통 네트워크 상의 서버에 있는 저장소를 remote repository 라고 부른다. 그리고 이런 remote에 있는 저장소를 git clone 하거나, git init 으로 생성해서 로컬에 존재하는 repository를 local repository 라고 한다. 

 


 

Local & Remote 

 

편의상 로컬 머신에 존재하는 모든 repository는 local이고 GitHub에 존재하는 모든 repository는 remote 라고 말한다.

로컬에 repository를 만드는 방법은 크게 두 가지가 있다.

 

1. 로컬에서 git init 으로 새로운 git repository 생성

2. 깃허브에서 새로운 repository를 만든 후 git clone 해서 가져오기 

 

이렇게 만든 local과 remote는 모두 그 자체로 완전한 버전 관리 시스템이다. 그래서 local 과 remote 의 작업 내용을 서로 반영하기 위해 pushpull 작업을 하게 된다.

 

  • push : local에서 remote로 commit 이력을 업로드 하는 것
  • pull : remote에서 local 로 commit 이력을 다운로드 하는 것

 


 

Upstream & Downstream

 

GitHub에서 repository를 생성하고나면 origin 이라는 용어가 보인다. clone 했을 때는 origin이 자동으로 등록돼있고, init 했을 때는 git remote add origin ... 으로 origin 을 직접 등록하라고 나온다. 여기서 말하는 origin이란, GitHub에 존재하는 repository 즉, remote를 뜻하는 단어이다. 다만 remote에 origin이라는 이름을 붙인 것 뿐이다. 

 

upstream과 downstream 은 상대적인 개념이라 origin과 local을 기준으로 생각하면 origin이 upstream, local이 downstream이 된다. 그 이유는 push와 pull을 기준으로 생각했을 때 origin으로부터 local로 흐르는 관계가 형성되기 때문이다. 

  • local에서 origin으로 push 한다.
  • origin에서 local로 pull 한다.

git push -u origin main 이라는 명령어에서 -u 옵션이 --set-upstream 옵션의 줄임으로 upstream을 설정한다는 뜻이다. upstream을 한 번 설정하고 나면 다음부터는 git push 또는 git pull 이라고 명령어만 입력해도 자동으로 origin의 main 브런치로부터 push와 pull을 진행하는 이유가 upstream 옵션을 통해 해당 브런치에서 upstream과 downstream 관계가 설정됐기 때문이다.

 


 

✅ 참고 

 

https://pers0n4.io/github-remote-repository-and-upstream/

 

GitHub에서 협업을 위한 remote repository와 upstream 이해하기

Git은 현재 소프트웨어 개발에 사용되는 널리 알려진 버전 관리 시스템으로 '분산 버전 관리 시스템' 중 하나입니다. 버전 관리 시스템에서 분산이라는 말은 사용자가 원격 서버를 거치지 않고서

pers0n4.io

 

 

'GIT' 카테고리의 다른 글

3. 헷갈리는 용어 정리  (0) 2022.05.07
2. Fork 와 clone 의 차이점  (0) 2022.05.07