squash
,cherry-pick
, 그리고 브랜치 전략까지 한눈에 정리
Git을 효율적으로 사용하려면 단순히 커밋하는 것 이상의 관리가 필요합니다.
이번 글에서는 커밋을 깔끔하게 관리하는 방법(squash
, cherry-pick
)과 실무에서 자주 사용하는 브랜치 전략(Git Flow, Trunk-based)을 함께 다룹니다.
git squash
— 여러 커밋을 하나로 합치기squash
는 여러 개의 작은 커밋을 하나의 커밋으로 합쳐 히스토리를 간결하게 만듭니다.
git rebase -i HEAD~3
pick
→ squash
로 변경📌 활용 예시:
불필요한 "작업 중", "오타 수정" 커밋을 합쳐 리뷰하기 좋은 히스토리를 만든다.
git cherry-pick
— 필요한 커밋만 선택 적용cherry-pick
은 다른 브랜치에서 원하는 커밋 하나만 가져올 수 있습니다.
git cherry-pick <commit_hash>
📌 활용 예시:
메인 브랜치에는 버그 수정만 적용하고, 나머지 기능 커밋은 제외할 때 유용.
명령어 | 목적 | 결과 |
---|---|---|
squash | 여러 커밋을 하나로 합쳐 단순화 | 새로운 단일 커밋 |
cherry-pick | 특정 커밋만 현재 브랜치에 적용 | 해당 커밋 복사 |
효율적인 협업을 위해서는 브랜치를 어떻게 운영할지가 중요합니다.
대표적으로 Git Flow와 Trunk-based Development 두 가지 전략이 있습니다.
브랜치 구조:
main
→ 실제 프로덕션 코드develop
→ 개발용 브랜치feature/*
→ 기능 개발용release/*
→ 릴리즈 준비용hotfix/*
→ 긴급 버그 수정용📌 장점:
📌 단점:
브랜치 구조:
main
(또는 trunk
) → 모든 개발자가 직접 통합📌 장점:
📌 단점:
대규모 조직(여러 팀 협업, 릴리즈 주기 길음) → Git Flow 선호
스타트업/애자일(빠른 배포, CI/CD) → Trunk-based 선호
공통 포인트
✔️ 커밋 관리 → squash
, cherry-pick
으로 깔끔하게
✔️ 브랜치 운영 → Git Flow vs Trunk-based 전략 선택
✔️ 실무 팁 → 전략 + 커밋 관리 명령어 조합으로 효율 극대화