Git Merge [fast-forward / 3-way ]

비니·2023년 5월 7일
0

Git

목록 보기
2/3
post-thumbnail

Branch ⛓

  • 동일한 소스코드에서 다른 작업을 동시다발적으로 할 수 있게 해주는 기능
    • 각자 독립적인 작업 영역 안에서 자유롭게 코드 변경 가능
    • 분리된 작업 영역에서 변경된 내용을
      추후 Merge를 통해서 통합된 새 버전으로 만들어 낼 수 있음.
    1. 현재 사용 중인 브랜치의 선두 부분을 나타내는 이름
    2. HEAD를 이동하면 사용하는 브랜치가 변경된다.

Merge ⛓

  • 기본 단위는 branch
  • 서로 다른 브랜치를 하나의 브랜치로 합치는 과정
    ⇒ 독립적인 개발 라인을 단일 라인으로 통합할 수 있음!

🌱 fast-forward merge

브랜치 포인터가 Merge 과정 없이 그저 최신 커밋으로 이동하는 방식

🤔 Fast Forward 관계?

  • 기존 브랜치와 분기한 브랜치의 관계
    • 분기한 브랜치의 커밋 히스토리가
      기존 브랜치의 커밋 히스토리를 포함하고 있을 때
      Fast Forward 관계를 가짐

🤔 언제 쓰이지 ?

  • 서로 다른 브랜치의 base 커밋에 내용이 변경되지 않았을 때 사용 됨. [EX] 기존 master 브랜치 에서 새로운 브랜치 feature 하나를 생성 한 후에 master 에서는 더 이상 커밋하지 않고, Feature에서만 커밋하는 경우에 Fast-forward 방식으로 머지된다.
  • 이 경우에는 Merge 커밋이 따로 만들어지지 않고 HEAD의 위치만 이동한다.

🤔 어떻게 쓰지?

git merge {병합할 브랜치명}

💡 non fast-forward 병합

git merge --no -ff {브랜치명}
  • merge 대상과 fast-forward 관계여도 강제로 merge 커밋을 생성하고 병합.
    1. 브랜치에 관계 없이 필요한 커밋만 가지고 올 수 있게 됨.
    2. 어떤 브랜치에서 merge했는지 기록을 남길 수 있음.

⇒ 협업 과정에서는 기록을 남기는 것이 필요해 이 방식이 권장된다 👍

🌱  3-way-merge

각 브랜치에 새 커밋이 하나 이상 있는 경우
Merge 했을 때 두 브랜치의 코드를 합쳐서 새로운 커밋을 자동 생성해주는 것

🤔 3-way-merge 방식?

  • 서로 다른 브랜치에 공통되는 base 브랜치를 기점으로 충돌을 최소화 시키는 방법
  • 결과를 별도의 커밋으로 만들고 해당 브랜치가 그 커밋을 가리키도록 이동한다.
  • 브랜치간 병합을 진행할 때, base를 기준으로
    어떠한 브랜치 파일이 수정되었는지 확인할 수 있어 충돌 문제 해결에 효과적임.

🤔 언제 쓰이지 ?

  • 두 브랜치에서 새 커밋이 생겼을 때 쓰임
  • 기존 Fast Forward 방식으로는 백트래킹 없이 다른 브랜치로 이동하는 것이 어려워
    3-way-merge 방식이 사용된다.

🤔 어떻게 쓰지?

git merge {병합할 브랜치명}


참고자료 ⛓

0개의 댓글

관련 채용 정보