Fast-forward
- A branch 에서 B branch 생성
- checkout B
- B branch commit
- checkout A
- A merge B
이 경우 A branch로부터 생성된 B branch가 commit 을 실행하면서 A branch 보다 앞서갑니다.
A branch 는 변경된 것이 없습니다.
A branch 가 B branch 를 병합하면서 A branch 의 포인터(HEAD)는 B branch 로 이동하게 됩니다.
합쳐진다기 보다 포인터(HEAD)만 B branch 의 최근 commit 위치로 이동하는 것입니다.
이 때 Fast-forward 방식의 merge 라고 메시지가 나타납니다.
Fast-forward 란 병합(merge)할 branch 의 최근 commit 이 현재 branch 보다 앞서 있다는 뜻입니다.
이번에는 A branch도 commit해 보겠습니다.
3-way Merge
- A branch 에서 B branch 생성
- checkout B
- B branch commit
- checkout A
- A branch commit
- A merge B
이 경우 A, B 모두 branch 생성 후에 변경점(commit)이 생성 되었기 때문에 포인터(HEAD)의 이동만으로는 병합될 수 없습니다.
이 경우에는 병합시 A가 자동으로 하나의 commit 을 더 생성하며(3-way Merge) B와의 내용물을 병합하게 됩니다.
이 때 recursive 방식의 merge 라고 메시지가 나타납니다.
Fast-forward 방식의 경우는 A와 B의 포인터가 모두 마지막 commit을 가리키지만,
recursive 방식의 경우 B는 여전히 자신의 마지막 commit을 가리키고 있고,
A는 B와 병합하여 새로 생성된 마지막 commit을 가리키게 됩니다.
새로운 commit이 생성되었으므로 자동으로 편집기가 열리며 자동으로 commit 메시지가 담겨 있습니다.
Merge branch 'B' into A
WRITTEN BY
- 손가락귀신
정신 못차리면, 벌 받는다.