Git 브랜치 정리 & 히스토리 관리 완벽 가이드

0

Git

목록 보기
10/13
post-thumbnail

🐙 Git 브랜치 정리 & 히스토리 관리 완벽 가이드

squash, cherry-pick, 그리고 브랜치 전략까지 한눈에 정리

Git을 효율적으로 사용하려면 단순히 커밋하는 것 이상의 관리가 필요합니다.
이번 글에서는 커밋을 깔끔하게 관리하는 방법(squash, cherry-pick)실무에서 자주 사용하는 브랜치 전략(Git Flow, Trunk-based)을 함께 다룹니다.


✅ 1. 커밋 히스토리 관리 팁

🔹 1-1. git squash — 여러 커밋을 하나로 합치기

squash는 여러 개의 작은 커밋을 하나의 커밋으로 합쳐 히스토리를 간결하게 만듭니다.

git rebase -i HEAD~3
  • 최근 3개의 커밋 중 합칠 커밋을 picksquash로 변경
  • 메시지를 하나로 정리 후 저장

📌 활용 예시:
불필요한 "작업 중", "오타 수정" 커밋을 합쳐 리뷰하기 좋은 히스토리를 만든다.


🔹 1-2. git cherry-pick — 필요한 커밋만 선택 적용

cherry-pick은 다른 브랜치에서 원하는 커밋 하나만 가져올 수 있습니다.

git cherry-pick <commit_hash>

📌 활용 예시:
메인 브랜치에는 버그 수정만 적용하고, 나머지 기능 커밋은 제외할 때 유용.


🔹 1-3. squash vs cherry-pick

명령어목적결과
squash여러 커밋을 하나로 합쳐 단순화새로운 단일 커밋
cherry-pick특정 커밋만 현재 브랜치에 적용해당 커밋 복사

✅ 2. Git 브랜치 전략

효율적인 협업을 위해서는 브랜치를 어떻게 운영할지가 중요합니다.
대표적으로 Git FlowTrunk-based Development 두 가지 전략이 있습니다.


🔹 2-1. Git Flow — 안정적인 릴리즈 관리에 최적화

브랜치 구조:

  • main → 실제 프로덕션 코드
  • develop → 개발용 브랜치
  • feature/* → 기능 개발용
  • release/* → 릴리즈 준비용
  • hotfix/* → 긴급 버그 수정용

📌 장점:

  • 안정적이고 체계적인 릴리즈 관리
  • 명확한 역할 분리

📌 단점:

  • 브랜치가 많아 관리 복잡
  • 빠른 배포가 필요한 환경에서는 느릴 수 있음

🔹 2-2. Trunk-based Development — 단일 브랜치 중심

브랜치 구조:

  • main (또는 trunk) → 모든 개발자가 직접 통합
  • 기능은 작은 단위(feature flag 사용)로 빠르게 머지

📌 장점:

  • 단순한 구조
  • 빠른 배포와 CI/CD에 최적화

📌 단점:

  • 팀 간 코드 충돌 위험이 높음
  • 엄격한 코드 리뷰/테스트 프로세스 필요

✅ 3. 실무 적용 사례

  • 대규모 조직(여러 팀 협업, 릴리즈 주기 길음)Git Flow 선호

  • 스타트업/애자일(빠른 배포, CI/CD)Trunk-based 선호

  • 공통 포인트

    • 브랜치 전략과 함께 squash로 히스토리 단순화
    • 필요한 커밋만 cherry-pick으로 선택 적용

🟢 마무리

✔️ 커밋 관리 → squash, cherry-pick으로 깔끔하게
✔️ 브랜치 운영 → Git Flow vs Trunk-based 전략 선택
✔️ 실무 팁 → 전략 + 커밋 관리 명령어 조합으로 효율 극대화


0개의 댓글