MLOps 부트캠프 by 한경+토스뱅크/Git

Remote Repository의 브랜치에 대해 더 알아보자(feat.origin과 master)

나니니 2024. 7. 21. 21:02

아래 포스팅에서 했던 작업 중, 

2024.07.15 - [Codeit/Git] - GitHub 시작하기(git push, git pull, git clone)

  1. GitHub에서 Math_Box라는 리모트 레포지토리(remote repository)를 만들고
  2. 로컬 레포지토리(local repository)의 내용을 그 리모트 레포지토리에 보내기위해 아래와 같은 커맨드 2개를 실행한 적이 있다. 

이때 아래의 두개 커맨드에 대해 알아보자. 

git remote add origin https://github.com/Marlangcow/Math_box.git

git push -u origin master

1. origin이란?

  • git remote add origin [GitHub 상 프로젝트 주소]: [GitHub 상 프로젝트 주소]가 가리키는 리모트 레포지토리를 origin이라는 이름으로 내 컴퓨터에 등록하겠다는 뜻이다. 
git remote add origin https://github.com/Marlangcow/Math_box.git

# remote: 리모트 레포지토리에 관한 작업을 할 때 쓰는 커맨드
# add: 새로운 리모트 레포지토리를 등록하겠다는 뜻
# (git hub 주소): 해당 git hub 리모트 레포지토리를 origin이라는 이름으로 등록하겠다는 뜻

여기서 origin 대신 다른 단어를 입력해도 상관없으나, Git에서 리모트 레포지토리를 최초로 추가할 때 origin이라는 이름으로 가리키는 것이 관례화 되어 있다. 

2. Remote Repositoy에 있는 브랜치

git push -u origin master

# 현재 로컬 레포지토리에 있는 master 브랜치의 내용(=master 브랜치와 관계된 모든 커밋들)을
# origin이라는 리모트 레포지토리로 보낸다는 뜻

# -u: --set-upstream의 약자로 로컬 레포지토리에 있는 master 브랜치가 origin에 있는 master 브랜치를 tracking(추적)하는 걸로 설정됨
# tracking이란, 로컬 레포지토리의 한 브랜치가 리모트 레포지토리의 한 브랜치와 연결되어 그것을 계속 바라보는 상태가 되는 것 
# => tracking connection

이때, 만약 orgin 이라는 리모트 레포지토리에 master 브랜치가 없으면 master 브랜치를 새로 생성하고 푸시한다. 

이렇게 tracking connection이 한번 설정되면, 사용자가 현재 master 브랜치에 위치해있을 때 git push, git pull 만 써도 리모트 레포지토리의 master 브랜치를 대상으로 동작한다. 

하지만 맨 처음에 이 옵션을 주지 않으면 tracking connection이 없기 때문에 나중에 git push를 하고 싶을 때 아래와 같이 적어줘야 한다. 

git push origin master:master

# origin: 리모트 레포지토리
# master:master: 앞의 master는 로컬 레포지토리의 master 브랜치, 뒤의 master는 리모트 레포지토리의 master브랜치

3. origin / master의 의미

codeit

master가 로컬 레포지토리의 master 브랜치를 나타내고, origin/master가 리모트 레포지토리의 master 브랜치를 나타낸다. 

위에선 git push를 하지 않았기 때문에 origin/master가 master보다 이전의 커밋을 가리키고 있는 것이다.