Posts Branch와 Merge
Post
Cancel

Branch와 Merge

Branch

브랜치(branch)는 어떤 작업이 이루어지고 있는 하나의 줄기라고 생각하면 된다.

깃과 깃허브를 이용한 협업 과정에서 여러 개발자들이 동시에 다양한 작업을 할 수 있게 만들어 주는 기능이다.

저장소를 처음 만들면, git에서 자동으로 ‘master’ 또는 ‘main’라는 이름의 브랜치를 생성한다.

인종차별적 요소나 주종관계의 의미를 담고 있는 whitelist/blacklist, master/slave 등의 용어를 사용하지 않으려는 업계 전반적인 움직임에 따라 요즘에는 main브랜치가 기본적으로 생성된다.

Branch 생성

기본적으로 브랜치를 생성하는 방법은 두 가지가 있다.

  • 명령어로 branch 생성

    1
    
    git branch [브랜치 이름]
    

    이 때 git branch에 아무런 옵션이나 브랜치 이름이 주어지지 않으면 브랜치 목록을 보여준다.

    branch명령어는 브랜치를 생성만 하고 HEAD를 해당 브랜치로 이동시키지 않는다.

    또한 새로운 브랜치는 마지막 커밋을 가리킨다.

  • branch를 이동하는 명령어로 새로운 branch를 생성하며 이동

    1
    2
    
    git checkout -b [브랜치 이름]
    git switch -c [브랜치 이름]
    

    위의 두 명령어는 git branch와는 달리 브랜치를 이동하는 명령어지만 각각 -b옵션과 -c옵션을 통해 새로운 브랜치를 생성함과 동시에 이동을 하는 명령어이다.

Branch 이동

브랜치를 이동하는 방법에도 두 가지가 있다.

  • checkout

    1
    
    git checkout [브랜치 이름]
    

    git checkout에 파일경로를 주면 해당 파일은 수정 전으로 돌아간다(add 명령어를 실행하지 않았을 경우에만).

    git add로 stage에 올라간 파일을 되돌리기 위해서는 git reset으로 처리해야 한다.

    즉, git checkout은 브랜치를 만드는 기능과 되돌리는 기능을 둘 다 수행한다.

    이를 분리한 명령어가 아래의 git switchgit restore이다.

  • switch

    switchcheckout명령어의 기능을 switchrestore로 분리하며 만들어진 명령어로 각각 브랜치의 이동과 복원을 담당한다.

    1
    2
    
    git switch [브랜치 이름]
    git restore [파일 이름]
    

    이 때 git restoregit checkout과 달리 --staged옵션을 사용하면 add로 인해 stage에 올라간 파일까지 되돌릴 수 있다.

Merge?

머지(Merge)는 서로 다른 브랜치의 내용 또는 원격 저장소와 로컬 저장소의 내용을 병합하는 것을 말한다.

Branch 병합(Merge)

두 브랜치를 병합하기 위해 몇가지 과정이 필요하다.

1
2
git switch main
git merge [병합할 브랜치 이름]
  1. 먼저 main브랜치 또는 병합을 진행할 브랜치로 이동한다.
  2. git merge로 다른 브랜치를 현재 작업중인 브랜치에 병합한다.

위의 과정을 거치면 git merge에 주어진 브랜치는 main브랜치에 병합되고 사라진다.

Rebase

리베이스(rebase)는 기능상으로만 본다면 브랜치를 병합한다는 점에서 머지와 같다고 볼 수 있지만 구조적으로 본다면 차이점이 존재한다.

리베이스는 해당 브랜치의 base를 옮긴다는 의미이다. 즉 main브랜치를 다른 브랜치로 병합 후 병합된 브랜치를 main으로 만든다.

Branch 병합(Rebase)

rebase도 역시 몇가지 과정이 필요하다.

1
2
git switch [병합할 브랜치 이름]
git rebase main
  1. 머지와는 다르게 병합시킬 브랜치로 이동한다.
  2. git rebase로 병합시킬 브랜치의 base를 main브랜치의 base로 변경한다.

참고자료 :

https://git-scm.com

https://www.inflearn.com/course

https://subicura.com

This post is licensed under CC BY 4.0 by the author.