devops

Github Branch, Merge 및 Remote 저장소에서 Origin과 Upstream의 개념 본문

DevOps/Github

Github Branch, Merge 및 Remote 저장소에서 Origin과 Upstream의 개념

vata500 2022. 4. 29. 15:50
반응형

Branch

브랜치는 나무가 가지에서 새 줄기를 뻗어가듯 여러 갈래로 퍼지는 데이터 흐름을 가리키는 말로 사용한다. 기존에 잘 동작하는 소스코드는 그대로 둔 채, 새 소스코드를 추가한 버전을 따로 만들어 관리하는 역할을 branch가 할 수 있다.

쉽게 말해서 branch는 Commit 사이를 가볍게 이동할 수 있는 어떤 포인트 같은 것이다. 기본적으로 Git은 Master branch를 만든다.

https://git-scm.com/book/ko/v2/Git-%EB%B8%8C%EB%9E%9C%EC%B9%98-%EB%B8%8C%EB%9E%9C%EC%B9%98%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80

처음 Commit하면 이 Master branch가 생성된 Commit을 가리킨다. 이후 커밋을 만들면 Master branch는 자동으로 마지막 커밋을 가리킨다.

branch는 'HEAD'라는 특수 포인터가 있다. 이 포인터는 지금 작업하는 Local branch를 가리킨다. branch를 새로 만들어도 Git은 master branch를 가리키게 된다. git log --oneline --decorate를 사용하면 branch가 어떤 커밋을 가리키는지 알 수 있다.

Merge

merge는 각 분기된 commit을 하나의 commit으로 다시 합치고 싶을 때 사용하는 명령어다. 사용하기 전에 먼저 merge를 하기 위해 기본이 되는 커밋을 선택하여 해당 커밋으로 checkout한다.

merge는 크게 두 종류다.

1) fast - forward

fast - forward란 뿌리가 되는 branch에 변화가 주어지지 않은 채 다른 변화가 생긴 branch로 merge하게 되는 것이다. 그러면 새 commit이 생성되지 않고 merge를 한 대상 branch의 마지막 commit에 뿌리가 되는 branch가 자리를 잡게된다.

2) not fast - forward

새로운 commit을 생성해 그곳에 merge를 하게된다.

git merge {branch} //merge를 원하는 branch

Origin과 Upstream의 개념

Origin?

git push origin master 명령어에서 origin은 복제한 remote repository의 기본 이름이다. 간단히 말해서 remote repository의 URL short name이다.

Upstream?

타인의 Github repository를 fork한 경우 내 Github가 Origin이 된다. 처음 fork를 시도한 repository를 'Upstream'이라고 부른다. origin과 upstream 모두 remote repository다. 

반응형

'DevOps > Github' 카테고리의 다른 글

Github CLI 사용을 위한 인증하는 방법  (0) 2022.04.29
Git 설정 및 주요 명령어 정리  (0) 2022.04.29
Comments