Git: 보호 정책(Branch Protection Rules)

calico·2025년 7월 23일

Computer Science

목록 보기
27/51

release 또는 master(혹은 main) 브랜치에서 직접 수정을 막는 것에 대한 이론적 배경과 원리브랜치 전략(Branching Strategy)소프트웨어 형상 관리(Software Configuration Management, SCM)의 중요한 부분입니다.

1. 왜 release/master에서 직접 수정을 막는가?

1.1. 핵심 브랜치 보호(Branch Protection)

  • release, master/main 브랜치는 보통 제품의 "안정 버전"을 의미합니다.
  • 주요 제품 배포 및 롤백 포인트이기도 하므로 예기치 않은 오류, 실수(commit/push)로부터 보호해야 합니다.
  • 개발 및 테스트 중인 변경 사항이 곧바로 반영되면 제품 품질, 이력 관리에 큰 문제가 생깁니다.

1.2. 일관성 유지(Consistency)

  • 모든 변경은 Pull Request(Merge Request)를 통해 진행해야 하며,
  • "리뷰", "자동 테스트(CI)", "승인" 절차를 거쳐야만 반영됩니다.
  • 직접 커밋 푸시는 기록 추적이 안 되고, 검증/검토 절차를 우회하여 버그가 production에 침투할 수 있음.

2. 적용되는 대표적인 브랜치 전략

2.1. Git Flow

  • master/release는 출시 버전만을 저장, 오직 PR(merge request)로만 변경.
  • 개발(br: develop), hotfix, feature 브랜치 등에서만 코드 변경 작업 허용.
  • master는 엄격히 보호(bare repository 원리와 유사).

2.2. Github Flow & Trunk-based Development

  • production(main, release) 브랜치에 직접 push 금지
  • PR(MR)을 통한 병합만 허용 → 자동화 테스트, 리뷰, 승인 필수.

3. 보호 정책(Branch Protection Rules)

3.1. 기술적 근거

  • 실수 방지: git push로 인한 갑작스러운 코드 오염 방지
  • 품질 보증: 리뷰, 빌드, 테스트 등 검증 절차 강제화
  • 감사 추적: 누가 언제 어떤 변경을 했는지 이력(record)을 남길 수 있음

3.2. 보호 방법

  • Push 금지(force push, direct push)
  • PR(Merge)만 허용
  • 리뷰어 n명 이상 승인 필수
  • CI 성공 시만 머지 허용
  • Tagging 및 릴리스 관리에만 활용

4. 이론적 원리

4.1. 형상 관리 원칙

  • 중앙 기준선(Baseline) 보호: 최종 산출물(릴리즈) 저장소는 예외/변칙 없이 관리
  • 변경 관리(Change Control): 공식적인 절차/심의를 거친 변경만 반영
  • 책임과 이력 추적(Accountability & Trace): 누가 뭘 변경했는지 명확히 남김

4.2. DevOps & CI/CD Best Practice

  • 직접적 수동 변경은 “immutable(불변성)” 원칙에 어긋남
  • pipeline을 타지 않는 변경(commit/push)은 야기할 수 있는 문제:
    • 빌드 불일치
    • 테스트 미실행
    • 배포 장애

5. 레퍼런스

release/master에서 직접 수정(커밋, 푸시) 금지는 품질, 일관성, 추적성 확보를 위한 DevOps, SCM, 소프트웨어 공학의 표준적 “보호” 원칙입니다. 항상 PR(코드 리뷰+자동화 테스트)을 통한 변경만 반영하며, 이를 '브랜치 보호(Branch Protection)'라고 부릅니다.

profile
개인 블로그

0개의 댓글