[GIT] Fast-Forward (병합 방법)

MJ·2022년 8월 12일
2

GIT

목록 보기
17/33
post-thumbnail
post-custom-banner

GIT에서 사용되는 병합 방법 2가지

깃에서 병합하는 방법들 중에 fast-forward3 way merge 방식에 대해서 알아보겠습니다.
base는 서로 다른 브랜치들에 부모가 되는 커밋 입니다.


💡 fast-forward

fast-forward 방법은, branch간의 병합을 진행할 때 커밋이 생기지 않고 merge 명령어를
실행하는 브랜치의 Head Commit이 병합 되는 branchHead commit으로 이동되는
방식 입니다.


어떠한 경우에서 사용 될까요 ?

❗ 서로 다른 브랜치의 base commit에 내용이 변경되지 않았을 때 사용 됩니다.
  이는 base commit이 커밋을 하지 않은 것과 동일한 의미를 갖는다.

직관적으로 예로 들자면, master branch에서 새로운 브랜치 하나를 생성 한 후에
master branch는 더이상 커밋하지 않고, 생성된 브랜치에서만 커밋을 하는 경우

어떠한 특이점 ?

단순하게 master branch의 커밋이 분리된 branch의 Head Commit으로 이동되기 때문에
merge commit 이력이 남지 않습니다. 

✔️ fast-forward 방식은, master branch의 Head Commit이 분리된 branch의 
   Head Commit 이후로 이동된다고 생각 하시면 됩니다.

master branchHead Commit > B | 현재 master의 버전은 B
master branch에서 feature branch를 생성 합니다.
③ 생성된 기능 브랜치는, commit 버전을 2개 생성 합니다 ( X, Y )
④ 커밋 내역을 확인 해보니, feature branchmaster branch의 모든 버전(커밋)을
가지고 있습니다. (A->B)

master branch에서 기능브랜치를 병합하게 되면, Fast-forward 방식으로 인해서
단순하게 master의 Head위치가 commit Y로 이동하게 됩니다.

❗ Fast-forward 방식은, 병합에 사용되는 branch가 병합하려는 branch의 모든 커밋내역을 가지고
있다면 병합 할 때 단순하게 커밋이 이동됩니다.



💡 fast-forward가 아닌 상황

master branch의 커밋은 A->B->C | feature branch의 커밋은 A->B->X->Y
② 기능브랜치는 master의 모든 커밋정보를 갖고있지 않습니다. (fast-forward X)
master branch에서 기능브랜치를 병합하게 되면, 단순하게 커밋 이동이 아니라
새로운 커밋이 생기면서 병합하게 됩니다.


Master branch에서 병합하면 커밋 이력에 feature branch와 병합(merge)된 커밋으로 생성 됩니다,



fast-forward 사용

1. main(master) branch에서 파일 생성 후 커밋


2. 브랜치를 생성하고, 브랜치에서 파일에 내용을 여러번 수정 후 커밋합니다.


3. main branch에서 other branch를 병합하고 깃 로그 확인하기


번외. fast-forward 방식은? 병합을 하지 않고 단순하게 커밋 이동한 것과 같은 결과를 낸다.

profile
프론트엔드 개발자가 되기 위한 학습 과정을 정리하는 블로그
post-custom-banner

0개의 댓글