Coding Cantabile

[Git] Git Protected branch 설정 (Branch Protection Rule) 본문

Git

[Git] Git Protected branch 설정 (Branch Protection Rule)

Gracekim 2022. 11. 9. 14:07

팀원들과 하나의 레포지토리를 브랜치를 여럿 나눠서 작업을 진행하던 중, 깃허브에 이런 메시지가 떴다.

발견 메시지

Your master branch isn't protected
Protect this branch from force pushing, deletion, or require status checks before merging

대충 해석을 하자면, 브랜치가 보호가 되지 않고 있다. 올바른 코드만이 올라가야 할 마스터 브랜치에 push나 삭제, 상태 체크 등을 미리 하여 마스터 브랜치를 보호하라는 의미인 거 같았다. 그래서 깃허브에는 코드를 적용 하기 전에 protected branch라는 것을 만들어서 브랜치를 보호하기 위해 protection rule을 설정할 수 있다.


Protect matching branches

Protect this branch를 누르면 안에 이러한 창이 뜬다. 하나씩 살펴보자.

Require a pull request before merging

merge전에는 반드시 Pull Request를 해야한다. (master을 제외한 브랜치로 일단 커밋 후 PR과정을 거쳐 리뷰 후에 merge가 해야한다) 서브 옵션들은 다음과 같은데, 대표적으로 'Require approvals' 은 지정한 휫수 만큼 승인이 되어야 Merge 가능하게끔 휫수를 설정하는 것이고, 'Dismiss stale pull request approvals when new commits are pushed' 는 새로 Pull Request를 수정하여 요청하면 기존 Pull Request를 무효화 할 것인지에 대한 여부, 'Require review from Code Owners' 는 코드의 소유자에게도 Pull Request를 받아야하는 지에 대한 여부이다.

Require status checks to pass before merging

테스트 결과, 기존 브랜치와 충돌이 없을 때에만 Merge가 가능하다.

Require conversation resolution before merging

Pull Request 과정 중 있었던 Conversation들이 모두 해결이 되었을 때 Merge되도록 한다.

Require signed commits

작성자가 직접 Sign한 커밋만 허용한다.

Require linear history

커밋이 히스토리에 남지 않도록 한다. 분기를 불가능하게 한다.

Require deployments to succeed before merging

배포가 성공하면 Merge를 가능하게 한다.

Lock branch

브랜치가 읽기 전용 으로 바뀐다.

Do not allow bypassing the above settings

이 설정을 우회하는 것을 금지한다.

Allow force pushes

강제로 푸쉬하는 것을 허용한다.

Allow deletions

삭제를 허용한다.