
github에 리포를 관리하다 보면 main 브랜치를 보호해야 될 때가 있다. 특히 내가 public으로 open 하고 관리하는 리소스에 누군가가 pr을 올리는 게 아니라 그냥 push를 해버린다면 끔찍할 것이다😅 사실 이번에 이와 관련된 일련의 사건이 있기도 했고.. 매년 깃헙 UI와 업데이트로 바뀌기도 하고 까먹어서 정리 겸 올려둔다.
1. 보호할 리포지토리에 settings로 접근

관리할 github repository의 메인에서 우측 상단 Settings를 클릭한다.
2. 좌측 사이드바에 Rulesets 클릭

좌측 사이드바에 Rules -> Rulesets을 클릭한다
3. Branch Rulset을 선택

New reuleset을 선택하고 New branch ruleset을 클릭한다. ( main 브랜치를 보호할 것이기 때문에 다음과 같이 진행한다. )
4. Rulset Name & Enforcement status 작업

Ruleset Name을 입력한다. ( 암거나 입력하면 된다. 나는 main 브랜치를 보호할 용도의 rule이기 때문에 다음과 같이 정의했다 )
Enforcement status를 Acitve로 변경해준다.
4-1. TargetBranch

Target branches의 Add target 토글을 선택하면 어느 브랜치를 타깃으로 할지 선택하는 옵션이 나온다.
나는 default 브랜치인 main브랜치를 관리할 것이기 때문에 Include default branch를 선택한다.
4-2. Rules 정의



default branch를 선택하면 Branch rule에 default로 Restrict deletions와 Block force pushes가 켜져 있다. 각 옵션은 기본 브랜치를 삭제하거나 해당 리포에 force 푸시를 방지하는 것을 의미한다. ( 그러면 당연히 안 되니까 그냥 활성화를 시켜준다 )
우리는 main 브랜치에 push를 하는것을 막아야 하기 때문에 Require a pull request before merging 옵션을 활성화해준다. Require a pull request before merging 옵션은 메인 브랜치에 직접 push 못하게 막고, PR(풀 리퀘스트)로만 변경을 머지하도록 강제하는 기능이다. 이때, Require에 approvals 인원을 선택할 수 있는데, 여러 명이서 관리하는 리포일 경우 1 이상의 숫자를 사용하면 되고, 혼자서 관리하는 Public 리포를 보호할 거면 0으로 해주면 된다. 단, 이때 반드시 Require review from Code Owners를 활성화시켜서 해당 리포를 관리하는 메인 테이너가 반드시 리뷰를 해야만 pr-merge가 되고 강제 push가 안되도록 막을 수 있다.
이렇게 완료를 하고 하단에 Create를 누르면 Ruleset Created 문구와 함께 main branch를 안전하게 보호할 수 있다.
'Git' 카테고리의 다른 글
| [Git]commit username이 root로 설정되는 이유 (0) | 2024.05.01 |
|---|