merge와 rebase는 서로 다른 두 개의 commit을 하나로 합치는 행위이다.
아래에서 merge와 rebase에 대해 알아본다. 각 동그라미는 하나의 commit을 뜻한다. 즉, 변경 사항이다. *이 붙어 있는 branch가 현재 선택한 branch임으로 이를 주의 깊게 본다.
* merge
merge의 뜻은 '병합하다, 하나로 합친다.' 이다. 위의 변경은 "git merge bugFix" 명령을 수행한 결과이다. merge나 rebase를 사용할 때 어느 branch가 새로 만들어진 commit을 가리키게 되는지 헷갈릴 때가 있는데 현재 branch를 주어로 하여 명령이 수행된다는 것을 기억하면 헷갈릴일이 없다. *을 보고 현재 branch가 main임을 알 수 있다. C2, C3 두 commit의 변경 사항을 모두 반영한 새로운 commit C4를 생성하고 현재 branch인 main이 가리키도록 한다.
* rebase
merge와 유사하다. 위의 변경은 "git rebase main" 을 수행한 결과이다. 현재 branch는 bugFix이다. 현재 branch인 bugFix가 가리키는 commit C2의 base를 main이 가리키는 C3으로 변경(rebase)한다.
merge, rebase 모두 서로 다른 두 commit의 내용을 합친 새 commit을 생성한다는 점에서 동일한 효과를 가진다. 변경 후의 그림을 보면 rebase는 마치 branch를 여러 개로 분기하지 않고 하나의 branch에서 commit을 계속 수행한 것처럼 보인다. 한 commit의 base를 다른 commit 아래로 변경한다는 개념 때문인데 덕분에 git history가 더 깔끔해 보인다.
'개발 > git' 카테고리의 다른 글
github gist test (0) | 2021.11.25 |
---|---|
github token으로 연동해서 command-line으로 push하기 (0) | 2021.10.25 |