버전 관리: Git (DevOps 관점)

CI/CD 파이프라인의 출발점으로서의 Git — 왜 버전 관리가 DevOps의 기반인지, 파이프라인을 좌우하는 브랜치 전략은 무엇인지.


CI/CD 파이프라인의 출발점으로서의 Git — 왜 버전 관리가 DevOps의 기반인지, 파이프라인을 좌우하는 브랜치 전략은 무엇인지.

목표: 팀의 배포 흐름에 맞는 버전 관리 전략을 선택·설명할 수 있는 수준

[!info] 명령어 레퍼런스는 분리했습니다 이 문서는 DevOps 맥락(파이프라인·전략)에 집중합니다. Git 명령어 사용법은 아래 문서를 참고하세요.

  • Git-요약-정리 — 핵심 요약
  • Git-상세-가이드 — 명령어별 옵션·예시·트러블슈팅
  • 00-MOC-Git — Git 노트 전체 지도

🎯 왜 Git이 DevOps의 기반인가

graph LR
    GIT["📁 Git<br/>(단일 진실 공급원)"] -->|"push 트리거"| CI["🔨 CI<br/>(빌드·테스트)"]
    CI -->|"성공"| CD["🚀 CD<br/>(배포)"]
    GIT -->|"선언적 상태"| GITOPS["🔄 GitOps<br/>(ArgoCD)"]
    GITOPS -->|"동기화"| K8S["☸️ Kubernetes"]
  • 단일 진실 공급원(Single Source of Truth): 코드·설정·인프라(IaC)까지 Git에 두면 모든 변경이 추적·재현·롤백 가능
  • 자동화의 트리거: push/PR/tag 이벤트가 파이프라인을 시작
  • 협업과 리뷰: PR을 통한 코드 리뷰 = 품질 게이트
  • GitOps의 전제: Git 상태 = 배포 상태 → 03-01-GitOps-원칙

🌿 브랜치 전략 — 파이프라인을 결정한다

브랜치 전략은 곧 배포 흐름이다. 팀 규모와 릴리스 주기에 따라 선택한다.

GitHub Flow — 지속적 배포에 최적

graph LR
    MAIN["main (항상 배포 가능)"] -->|"브랜치"| FEAT["feature/*"]
    FEAT -->|"PR + CI"| REVIEW["리뷰"]
    REVIEW -->|"머지"| MAIN
    MAIN -->|"자동 배포"| PROD["Production"]
  • main은 항상 배포 가능, feature 브랜치 → PR → 머지 → 자동 배포
  • 장점: 단순, 빠른 배포 / 적합: 웹 서비스, 소규모~중규모 팀

Git Flow — 명확한 릴리스 주기

graph TB
    MAIN["main (프로덕션)"] --> HOT["hotfix/*"]
    MAIN --> REL["release/*"]
    REL --> DEV["develop (통합)"]
    DEV --> FEAT["feature/*"]
    FEAT --> DEV
    DEV --> REL
    REL --> MAIN
    HOT --> MAIN
  • main/develop/feature/release/hotfix 5종 브랜치
  • 장점: 버전 관리 명확 / 단점: 복잡, 지속적 배포와 상충 / 적합: 버전 릴리스 제품

Trunk-Based — 대규모·CI 성숙 팀

graph LR
    TRUNK["main (trunk)"] -->|"짧은 브랜치"| SHORT["feature (1~2일)"]
    SHORT -->|"자주 머지"| TRUNK
    TRUNK -->|"Feature Flag로 숨김"| PROD["Production"]
  • 모두가 main에 짧게 사는 브랜치로 하루 단위 머지, 미완성은 Feature Flag로 숨김
  • 장점: 통합 지옥 회피, CI/CD 궁합 최고 / 적합: 대규모, 높은 자동화 성숙도

전략 비교

전략복잡도배포 빈도적합한 팀
GitHub Flow낮음높음(수시)소·중규모, 웹 서비스
Git Flow높음낮음(주기적)버전 릴리스 제품
Trunk-Based중간매우 높음대규모, CI 성숙

🤝 PR과 품질 게이트

PR은 단순 머지 수단이 아니라 자동화된 품질 검문소다.

graph LR
    PR["Pull Request"] --> LINT["📏 Lint"]
    LINT --> TEST["🧪 Test"]
    TEST --> SCAN["🔒 Security Scan"]
    SCAN --> REVIEW["👀 Human Review"]
    REVIEW --> MERGE["🔀 Merge"]
  • 브랜치 보호 규칙(Branch Protection): main 직접 push 금지, PR·CI 통과·리뷰 승인 필수
  • 상태 체크(Status Checks): CI 그린 아니면 머지 차단
  • CODEOWNERS: 영역별 필수 리뷰어 지정
  • 실제 구현 → 02-02-GitHub-Actions

✍️ 커밋 컨벤션과 자동화

일관된 커밋 메시지는 사람뿐 아니라 자동화 도구도 읽는다.

<type>(<scope>): <subject>
타입의미
feat새 기능 (MINOR 버전↑)
fix버그 수정 (PATCH 버전↑)
BREAKING CHANGE호환성 깨짐 (MAJOR 버전↑)
docs/style/refactor/test/chore기타
  • 시맨틱 버저닝 자동화: 커밋 타입으로 버전·CHANGELOG 자동 생성(semantic-release)
  • 자세한 규칙·예시 → Git-상세-가이드#커밋 메시지 컨벤션 (Conventional Commits)

📋 체크리스트

  • Git이 CI/CD·GitOps의 기반인 이유 설명
  • 팀 상황에 맞는 브랜치 전략 선택·근거 제시
  • GitHub Flow / Git Flow / Trunk-Based 비교
  • 브랜치 보호 규칙 + 상태 체크 설정
  • PR을 품질 게이트로 활용
  • 커밋 컨벤션 → 버전 자동화 연결
  • 명령어 숙련 → Git-상세-가이드 체크리스트 참고

🔗 관련 노트

  • 00-MOC-Git — Git 노트 전체 지도
  • Git-상세-가이드 — 명령어 완전판
  • 01-01-CI-CD-개념 — CI/CD 파이프라인
  • 02-02-GitHub-Actions — PR 자동화·브랜치 보호 구현
  • 03-01-GitOps-원칙 — Git 기반 배포

마지막 업데이트: 2026-06-02