[TIL-DAY25] merge 전략 [merge commit, rebase]

김유란·2025년 2월 3일

merge 전략

1. merge commit

  • 브랜치를 병합할 때 별도의 병합 커밋을 생성
  • 기존 브랜치들의 커밋 기록이 유지됨
  • merge 한 기록을 남겨야 할 때 사용 (release 할 때 등)
  • branch가 많아져 히스토리와 그래프가 복잡해질 수 있음

git checkout main
git merge feat/1 --no-ff -m "merge pr from feat/1"
git merge feat/2 --no-ff -m "merge pr from feat/2"

⚡ merge commit이 생성됨
병합 커밋이 생기면서 "Merge branch 'feature' into 'main'" 같은 메시지가 추가됨


2. squash

  • 여러 개의 커밋을 하나로 합치는 작업
  • 브랜치의 히스토리를 깔끔하게 유지 가능
  • 개별 변경 내역 손실되어 커밋 단위로 변경 사항 추척이 어려워짐
  • 협업 시 주의 필요
    • 이미 공유된 브랜치에서 squash를 하면 다른 사람의 히스토리와 충돌 발생할 수 있음

git checkout main
git merge --squash feature
git commit -m "Merged feature branch with squash"

⚡ merge commit이 생성되지 않음
feature 브랜치의 모든 커밋이 단일 커밋으로 합쳐짐


3. rebase

  • 한 브랜치의 변경 사항을 다른 브랜치의 최신 커밋 뒤에 다시 적용
  • 커밋 히스토리를 재정렬하여 선형적인 히스토리 유지 가능
    • master 브랜치를 기준으로 커밋 히스토리가 시간대별로 남음

git checkout feat/1
git commit -m "feat: 1"

git checkout dev
git merge --ff feat/1

--ff : fastforward (별도의 병합 커밋 생성 없이 그냥 merge 하는 것)

  • --ff 가 default (생략 가능)

0개의 댓글