[git rebase란?]
프로젝트를 깃으로 관리한다면, 브랜치 가지치기와 합치는 과정은 필수이다. 그리고 현재 브랜치를 다른 브랜치로 합치는 명령어는 merge 와 rebase 가 있다.
[git rebase와 merge의 차이]
merge 는 두 브랜치를 합치는 가장 쉬운 방법으로, 두 브랜치의 가장 마지막 커밋 두 개 (C3, C4) 를 공통 조상에 합치는 3-way Merge로 새로운 커밋 (C2)를 만들어 낸다.
rebase 는 두 브랜치를 합치는 다른 방법으로, 두 브랜치의 공통 커밋(Common Commit)으로 이동하고 나서, 다른 브랜치의 마지막 커밋(Another Last Commit) 으로 이동한다. 그리고 Another Last Commit 에서부터 현재 브랜치의 Common Commit 부터 현재 브랜치의 마지막 Commit까지 Diff들을 차례로 해결해나간다
이번 실습은
master 브랜치에서 2개의 브랜치 (branch-a, branch-b) 를 분기하고, master와 분기한 브랜치에서 각각 commit을 2개씩 날린 후, 변경 내역들을 master에 합치는 과정을 진행한다.
각 commit은 hello.txt 파일에 기존의 내용을 지우고 한 문장씩 적어서 강제로 병합 충돌을 일으키게 진행했다.
[merge]

현재 상태를 그래프로 보면 다음과 같다.

이제 master 브랜치에서 branch-a 와 branch-b 를 각각 합치고 충돌도 해결하면 위와 같이 2개의 Merege 커밋이 생기는 것을 볼 수 있다
[rebase]

rebase 또한 동일한 실습으로 위와 같은 환경에서 시작한다. rebase에서는 충돌해결 과정을 자세히 보기 위해 다음과 같이 파일을 수정했다