예전 포스트에서 두 브랜치를 병합하는 방법을 간단하게만 다뤘습니다. 오늘 다룰 병합 방식은
Fast-Forward
병합 방식인데, 이 병합 방식이 무엇이고, 어떻게 이루어지는지 알아보도록하겠습니다.
Fast-Forward
는 가장 간단한 병합 방식입니다. 이 방식은 혼자 개발하는 경우에 사용되는 병합방법입니다. 혼자서 프로젝트를 개발하다보면 일반적으로는 코드의 작성, 수정, 브랜치가 순차를 가지고 이루어집니다. --graph
등의 옵션으로 본다면, 여러 브랜치를 나누게 되더라도 결국 순차적으로 이루어짐을 볼 수 있습니다. 이렇게 순차적인 커밋 기록들에 대해 병합하는 방법을 Fast-Forward
병합이라고 부릅니다.
위와 같은 파일 구조를 가진 디렉토리에서 실습을 진행합니다. 새로 만들어서 진행해도 상관없습니다.
먼저 sub
라는 이름의 브랜치를 만들었습니다. 그리고 생성한 브랜치로 이동해줍니다.
git branch sub
git checkout sub
aee83567659bce6e867104257638dbb2fc6b2b2c
의 커밋ID를 가진 커밋에서 분기를 하게 되었습니다.
다음으로 이 디렉토리 내의 파일을 아무거나 열고 아무렇게나 수정해주세요. 파일을 새로만들거나 해도 좋습니다. 저는 두 개의 파일을 수정하고 각각 따로 커밋을 진행했습니다.위와같이 진행했을 때 현재 커밋의 상태는 다음과 같습니다.
그럼 이제 나뉘어진 브랜치를 병합할 차례입니다. 위 그림에서 보시다시피 브랜치 이후 갈래가 더 나뉘어 지지 않고 브랜치에서 작업이 이루어지죠? 그래서 Fast-Forward
병합은 따로 신경써야할 사항이 없습니다. git merge
명령을 통해 병합을 수행하면 됩니다.
이때 중요한 점은 merge
명령을 수행하는 곳이 현재 브랜치 위치이기 때문에 master
에다 지금 만든 브랜치를 병합시키려면 git checkout
으로 master 브랜치로 이동한 후에 병합을 실시해야한다는 점 입니다.
마스터 브랜치로 이동하고 merge를 해보겠습니다.커밋 기록을 확인하기 위해 git log
를 찍어보면 브랜치에서 작업했던 커밋기록이 마스터 브랜치의 최신커밋으로 변경되었음을 볼 수 있습니다.
정리하자면 병합이전의 커밋 상태는 아래 그림과 같았습니다.이 상태에서 Fast-Forward
병합을 실시하면 다음과 같이 이어지게 되는 것 입니다.
오늘은 가장 간단한 병합 형태인 Fast-Forward
에 대해 알아봤습니다. 다음 포스트에서는 좀 더 복잡한 형태인 3-Way Merge
에 대해서 알아보도록 하겠습니다.