[GIT] Fast-Forward 병합

2022. 8. 10. 04:15GIT

깃의 가장 간단한 브랜치 병합은 Fast-Forward 방식이다.

일반적으로 이 방식은 혼자 개발할 때 사용한다.

혼자 개발할 때는 브랜치가 생성된 커밋에 따라 순차적으로 분기되고 코드 수정도 순차적으로 할 때가 많기 때문이다.

로컬 저장소에 index.html 파일 하나가 커밋된 상태이다.

 

브랜치 생성과 수정 작업

master 브랜치 외 새 브랜치 feature를 생성하였다.

브랜치 생성할 때 분기 기준은 master 최종 커밋 포인터이다.

rev-parse 명령어를 사용하면 최종 커밋 아이디를 알 수 있다.

$ git rev-parse 브랜치명

해당 브랜치에서의 최종 커밋 아이디 출력

 

생성된 브랜치

master와 feature 브랜치는 최종 커밋이 동일한 상태이다.

 

feature 브랜치에서 <header></header> 태그를 추가하였다.

header 태그 추가한 feature 브랜치

이어서 index.html 파일에 <ul><li> 태그를 추가하였다.

menu1 추가한 feature 브랜치

또 index.html 파일에 <li>태그 추가하였다.

menu2 추가한 feature 브랜치

커밋 로그를 확인해보면

커밋 로그

소스트리와 동일하게 순차적으로 커밋이 되어 있다.

feature 브랜치를 만들고 커밋을 하였지만 소스트리에서는 브랜치 경로가 일직선으로 1개만 있다.

순차적으로 커밋을 했기 때문에 일직선으로 보이는 것뿐이다.

이런 모양의 브랜치에서 병합 작업을 할 때는 Fast-Forward 방식의 알고리즘이 적용된다.

 

병합 위치

깃의 merge 명령어는 브랜치를 병합한다.

merge 명령어는 현재 브랜치를 기준으로 다른 브랜치의 모든 커밋을 병합한다.

$ git merge 브랜치이름

 

Fast-Forward 병합 적용

커밋 작업은 분기된 feature 브랜치에서 모두 수행한 상태에서 master 브랜치에서 병합을 적용하겠다.

maser 브랜치에 feature 브랜치 병합

Fast-forward 방식으로 병합했다고 출력 메시지가 나온다.

브랜치 경로 변화

master 브랜치와 feature 브랜치의 커밋 내용이 동일해졌다.

동일한 HEAD 포인터를 가지고 있다.

 

Fast-Forward 병합은 작업한 브랜치를 원본 브랜치에 병합할 때 작업한 브랜치의 시작 커밋을 원본 브랜치 이후의 커밋으로 가리킨다.

728x90

'GIT' 카테고리의 다른 글

[GIT] 브랜치 삭제  (0) 2022.08.10
[GIT] 3 - way 병합  (0) 2022.08.10
[GIT] 병합  (0) 2022.08.10
[GIT] 워킹 디렉토리 청소  (0) 2022.08.08
[GIT] 스태시  (0) 2022.08.08