저장소 설정과 브랜치 보호 규칙
저장소 Settings에서 다루는 기본 설정과, 공유 브랜치를 실수로부터 지키는 브랜치 보호 규칙을 함께 정리했습니다.
GitHub Repository 환경설정
프로젝트 상단바의 Settings에서 저장소 전반의 규칙을 설정할 수 있습니다. (Settings가 안 보인다면 권한이 없는 것이니 요청해서 받으면 됩니다.) 좌측 네비게이션의 General 메뉴에서 중요한 설정 세 가지를 짚어보겠습니다.
Default Branch
PR을 만들 때 기본으로 머지 대상이 되는 브랜치입니다. 보통 main으로 설정돼 있지만, 필요하다면 develop 등으로 바꿀 수 있습니다. 바꾸면 이후 생성되는 PR은 새 기본 브랜치로 머지를 요청하게 됩니다.
PR 머지 종류 제한하기
앞서 다룬 Merge Commit / Squash / Rebase 세 가지 중 특정 방식만 쓰도록 강제할 수 있습니다. 팀의 머지 정책을 통일하고 싶을 때, 특히 깔끔한 히스토리를 유지하고 싶을 때 유용합니다.
머지 후 브랜치 자동 삭제
PR용으로 만든 브랜치는 대부분 일회성입니다. 이 옵션을 켜두면 PR이 머지되는 순간 해당 브랜치가 자동으로 삭제되어, 안 쓰는 브랜치를 일일이 정리하는 수고를 덜 수 있습니다.
브랜치 보호 규칙 (Branch Protection Rules)
브랜치 보호는 한 사람의 실수가 다른 개발자 전체에게 영향을 미치는 걸 막아주는 기능입니다. 보통 main/develop처럼 여러 명이 공유하는 브랜치에 걸어둡니다. Settings → Branches → Add branch protection rule에서 설정합니다.
어떤 브랜치를 보호할지: 이름 패턴
보호 규칙은 브랜치 이름 패턴을 기준으로 적용됩니다. main처럼 정확한 이름을 적어도 되고, feature/*처럼 패턴을 써서 feature/abc, feature/xyz 등 앞에 feature/가 붙은 모든 브랜치를 한 번에 보호할 수도 있습니다. (유닉스 스타일 글롭 패턴 문법을 따릅니다.)
자주 쓰는 설정들
Require a pull request before merging 해당 브랜치로의 직접 push를 막고, 반드시 PR을 거치도록 강제합니다. 리뷰 없이 main에 실수로 push하는 사고를 막아줍니다. 이 옵션을 켜면 하위 옵션도 열립니다.
Require approvals: 승인이 일정 수 이상 있어야 머지 가능Require review from Code Owners: 코드 담당자(CODEOWNERS)의 리뷰가 필요
Require linear history 머지된 커밋이 항상 선형적인 이력을 유지하도록 강제합니다. 즉 해당 브랜치에는 rebase나 squash 방식만 허용되고, Merge Commit 버튼은 사용할 수 없게 됩니다.
Do not allow bypassing the above settings 위 규칙들은 기본적으로 "경고"만 해줄 뿐, 관리자는 무시하고 진행할 수 있습니다. 이 옵션을 켜야 예외 없이 누구도 규칙을 어길 수 없게 됩니다.
정리
| 개념 | 한 줄 요약 |
|---|---|
| Default Branch | PR이 기본으로 머지되는 대상 브랜치 (보통 main) |
| Branch Protection Rules | 이름 패턴 기반으로 특정 브랜치에 PR 필수, 선형 히스토리 등을 강제 |
출처: Codyssey-B1/B2-2
