Git branch의 merge와 rebase

Jogi's 코딩 일기장·2021년 9월 14일
0

merge

  • 뻗어나간 브랜치의 내용을 병합하기 위해서는 위치가 뻗어나간 위치의 브랜치인 상태에서 git merge 뻗어나간 브랜치명령어를 입력한다.

  • 브랜치가 머지되기 전에 원 브랜치의 추가적인 커밋이 없으면, 브랜치가 분기될 필요가 없으며, 자동적으로 fast-forward 방식으로 병합이 이루어진다.

  • fast-forward 방식이란 별도의 커밋을 생성하지 않고 원 브랜치가 가리키는 커밋을 뻗어나간 브랜치가 생성한 커밋으로 바꾸는 작업을 말한다.

  • 만일, 원 브랜치에 별도의 커밋이 있었다면, fast-forward가 아닌 merge commit 방식으로 병합되었을 것이다. 이는 각 브랜치가 줄기처럼 분기한 후, 병합의 모양새를 가진다.

  • rebase의 원리가 바로 앞서 배웠던 fast-forward와도 같다.

merge와 rebase 차이

merge

  • 변경 내용의 이력이 모두 그대로 남아 있기 때문에 이력이 복잡해진다.

rebase

  • 말 그대로 branch base를 이동시킨다는 뜻으로, 머지처럼 브랜치 통합을 목적으로 하지만, 특정 시점으로 브랜치가 가리키는 곳을 변경하는 기능을 한다.

  • 원 브랜치에서 git rebase main (브랜치) 명령어를 입력하면 main의 가장 최신 커밋으로 브랜치가 가리키는 곳이 변경된다. (main의 다른 커밋에서 충돌이 없을 경우)

profile
프로그래머로서의 한걸음

0개의 댓글