Contents
Rebase mergeRebase merge
Rebase merge 는 Git에서 브랜치를 병합할 때, 기존의 병합 커밋을 만드는 대신
한 브랜치의 커밋들을 다른 브랜치의 커밋 뒤로 재배치하여 히스토리를 직선형으로 만드는 병합 방법이다.
github 에서 발생 할 수 있는 merge 충돌을 막기 위해 사전에 테스트 해보는 것으로,
앞에서 살펴본 3-way merge 가 아닌 Rebase merge 를 사용하는 것이 옳다. 가볍게 원리를 이해해보자.
git init 으로 작업환경 만들기
a 파일 생성
git add .
git commit -m “a”

b 파일 생성하고,
git add .
git commit -m “b”
git checkout -b topic → topic 브랜치 생성과 체크아웃 동시에

topic 브랜치에서 파일 d 생성하고, 동일하게 커밋까지 하면 아래와 같은 하나의 가지가 된다.
a - b (master) - d (topic)

a - b (master) - d (topic) 여기서
가지치려면 다시 master 로 넘어가서 c 파일을 만들고 동일하게 커밋까지 진행.
a - b - c (master)
a - b - d (topic)
이렇게 하면 형상이 달라진다. (형상이 달라지면 앞에서 배웠던 3way merge 가 된다.)

a - b (master)
a - b - d (topic)
형상이 같으면 fast forward merge → 충돌이 일어날 수 가 없음, 포인터만 이동하니까
a - b - d
a - b - c (master)
a - b - d (topic)
형상이 다르면 3 way merge → 충돌이 일어날 수 있음
a - b - d - c
git checkout topic (topic 으로 가서)
git rebase master (친 가지에서 깔끔하게 정리해서)
a - b - c - d
이것이 바로 rebase merge

협업 할 때에도 rebase merge 하고 나서 github 으로 보내면,
fast forward merge 가능하기 때문에, 사전에 충돌을 막을 수 있다.
Share article