[git] Branch merge 종류

최준영·2024년 1월 13일

Branch Merge 종류

  1. Fast-forward merge
  2. 3-way merge

Fast-forward merge란?

fast-forward merge란, branch간 merge가 진행 될 때 커밋이 생기지 않고 merge 명령어를 실행하는 branch의 head commit이 병합되는 branch의 head commit으로 이동되는 방식이다.

  • 어떨때 fast-forward merge를 사용할까?

    현재 branch의 끝이 병합하려는 branch의 시작 지점하고 같을때 사용 가능하다!
    (커밋 히스토리에서 같은 선상에 있는 브랜치를 머지할 때)

  • fast-forward merge의 특징

    1. 선형 커밋 히스토리
      -> fast-forward는 커밋 히스토리를 선형적으로 유지한다.
    2. 별도의 merge commit 생성 x
      -> fast-forward는 별도의 merge commit을 생성하지 않고 단순히 head pointer를 병합하려는 branch의 최신 commit으로 이동한다.


    -> merge전

    -> merge 후

3-way merge란?

서로 다른 브랜치에 공통되는 base branch를 기점으로 충돌을 최소화 하는 방법이다.

  • 어떨때 3-way merge를 사용할까?

    이 방식은 두 브랜치가 공통의 기준점에서 분기한 후 각각 다른 변경사항을 가진 경우에 사용된다!

  • 3-way merge 방법

  1. 첫번째 case는 other branch에서 base branch와 다른 파일이 생성되었기 때문에 other branch를 기준으로 merge
  2. 두번째 case는 base branch와 다른 파일이 없기 때문에 그대로 merge
  3. 세번째 case는 my branch하고 other branch내용이 다르지만 base하고도 두 branch 내용이 다르므로 conflict발생
  4. 1번 case하고 같으므로 똑같이 적용하면 base와 다른 My branch를 기준으로 merge
  5. 만약 my branch하고 other branch내용이 같지만 base branch 하고 내용이 다르면 my branch하고 other branch 내용으로 merge한다

참고

https://velog.io/@devp1023/GIT-3-way-merger-%EB%B3%91%ED%95%A9-%EB%B0%A9%EB%B2%95
https://velog.io/@devp1023/GIT-3-way-merger-%EB%B3%91%ED%95%A9-%EB%B0%A9%EB%B2%95

0개의 댓글