콘텐츠로 이동

ADR-0004: Squash 전용 머지

  • 상태: 대체됨 (→ ADR-0007)
  • 날짜: 2026-06-21

대체됨. 장수 브랜치 dev를 Squash로 main에 머지하면 dev/main이 발산하는 문제가 드러나, 머지 전략을 경계별로 나눈 ADR-0007로 대체되었다. 아래 본문은 당시 결정 기록으로 남긴다.

맥락

모노레포에서 작은 PR을 지향한다. main/dev 히스토리가 읽기 쉽고 되돌리기 쉬워야 한다. PR 안의 중간 커밋(작업 흔적)이 통합 브랜치 히스토리를 어지럽히는 것을 막아야 한다.

결정

Squash 머지만 허용한다. Merge commit·Rebase 머지는 사용하지 않는다. - PR 하나 = 커밋 하나 = 되돌릴 수 있는 단위. - Squash 시 PR 제목이 최종 커밋 메시지가 되므로, PR 제목은 Conventional Commits 형식([[0003-branch-strategy]]와 함께 git-conventions.md 참고)을 정확히 따른다. - GitHub 저장소 설정에서 Squash만 켜고 나머지 머지 방식은 끈다(4단계 규칙 강제 시).

대안

  • Merge commit — 통합 히스토리에 PR 내부 커밋과 머지 커밋이 모두 남아 노이즈가 크다.
  • Rebase 머지 — PR이 여러 커밋으로 흩어져 "PR 단위 롤백"이 어렵다.

결과

  • main/dev가 선형 히스토리가 되어 추적과 revert가 단순하다.
  • PR을 작게 유지하도록 자연히 압박한다.
  • PR 내부 중간 커밋은 자유롭게 쌓아도 되지만, PR 제목은 정확해야 한다.