[Git] Merge 종류

hahaha·2021년 10월 4일
0

Git

목록 보기
4/5

1. Merge

  • 기존 브랜치에서 분기된 새로운 브랜치를 병합하는 새로운 커밋(m)을 생성하여 머지된다.

2. Squash And Merge

  • 기존 merge 방식과 유사하게 새로운 브랜치를 병합하는 새로운 커밋(abc)을 생성하여 머지된다.
  • 머지 커밋의 부모 브랜치는 항상 하나이다.
    -> main 브랜치에 분기된 브랜치 각각의 커밋 기록이 남지 않는다.

3. Rebase And Merge

  • 분기된 브랜치의 베이스를 (현재 브랜치 위치로) 변경한다.
  • 병합 커밋이 따로 생성되지 않는다.
  • 새로운 브랜치와 커밋 메세지는 같지만, 실제 커밋 로그의 해쉬 값은 다르다.
    -> 실제로는 다른 커밋이다.
  • 기존 브랜치에 또 다른 변경 내용이 있을 경우 충돌이 난다.
  • master에서 rebase를 하기 보단, 분기된 브랜치에서 master 브랜치를 rebase 하고 병합하는 것이 좋다.
  • 작성한 커밋 하나 하나가 모두 main 브랜치에 보여야 한다면 rebase 방식을 추천

기존에는 커밋 기록을 깔끔하게 하고, 각 커밋을 볼 수 있도록 rebase and merge 방식을 사용했었다.
하지만, 하나의 기능 브랜치의 여러 커밋들은 큰 의미가 없다고 판단했다.
(PR에서 파생된 수정 커밋이기 때문에)
그래서 각 기능에 대한 커밋이 하나만 기록(병합 커밋)되는 squash and merge 방식으로 전환했다.
(git이 자동으로 해당 브랜치의 여러 커밋 메세지를 자동으로 하나로 통합하여 제공한다.)

참고 자료

[Git] Merge 이해하기 (Merge / Squash and Merge / Rebase and Merge)

profile
junior backend-developer 👶💻

0개의 댓글