About branch protection rules
You can enforce certain workflows or requirements before a collaborator can push changes to a branch in your repository, including merging a pull request into the branch, by creating a branch protection rule.
By default, each branch protection rule disables force pushes to the matching branches and prevents the matching branches from being deleted. You can optionally disable these restrictions and enable additional branch protection settings.
By default, the restrictions of a branch protection rule don't apply to people with admin permissions to the repository. You can optionally choose to include administrators, too.
특정 분기, 모든 분기 또는
fnmatch 구문으로 지정한 이름 패턴과 일치하는 모든 분기에 대한 분기 보호 규칙을 리포지토리에 만들 수 있습니다. 예를 들어
release 단어를 포함하는 모든 분기를 보호하려면
*release*에 대한 분기 규칙을 만들 수 있습니다. For more information about branch name patterns, see "분기 보호 규칙 관리."
모든 병합 요구 사항이 충족되면 자동으로 병합하도록 끌어오기 요청을 구성할 수 있습니다. 자세한 내용은 "끌어오기 요청 자동 병합"을 참조하세요.
About branch protection settings
For each branch protection rule, you can choose to enable or disable the following settings.
For more information on how to set up branch protection, see "분기 보호 규칙 관리."
Require pull request reviews before merging
리포지토리 관리자는 누군가가 끌어오기 요청을 보호된 분기에 병합하기 전에 모든 끌어오기 요청이 특정 수의 승인 검토를 받도록 요구할 수 있습니다. 리포지토리에서 쓰기 권한이 있는 사람 또는 지정된 코드 소유자의 승인 검토를 요청할 수 있습니다.
If you enable required reviews, collaborators can only push changes to a protected branch via a pull request that is approved by the required number of reviewers with write permissions.
If a person with admin permissions chooses the Request changes option in a review, then that person must approve the pull request before the pull request can be merged. If a reviewer who requests changes on a pull request isn't available, anyone with write permissions for the repository can dismiss the blocking review.
모든 필수 검토자가 끌어오기 요청을 승인한 후에도 보류 중이거나 거부된 검토가 있는 동일한 커밋을 가리키는 헤드 분기가 있는 다른 열린 끌어오기 요청이 있는 경우 협력자는 끌어오기 요청을 병합할 수 없습니다. 쓰기 권한이 있는 사용자는 먼저 다른 끌어오기 요청에 대한 차단 검토를 승인하거나 해제해야 합니다.
If a collaborator attempts to merge a pull request with pending or rejected reviews into the protected branch, the collaborator will receive an error message.
remote: error: GH006: Protected branch update failed for refs/heads/main. remote: error: Changes have been requested.
Optionally, you can choose to dismiss stale pull request approvals when commits are pushed that affect the diff in the pull request. GitHub records the state of the diff at the point when a pull request is approved. This state represents the set of changes that the reviewer approved. If the diff changes from this state (for example, because a contributor pushes new changes to the pull request branch or clicks Update branch, or because a related pull request is merged into the target branch), the approving review is dismissed as stale, and the pull request cannot be merged until someone approves the work again. For information about the base branch, see "끌어오기 요청 정보."
Optionally, you can restrict the ability to dismiss pull request reviews to specific people or teams. For more information, see "끌어오기 요청 검토 해제."
Optionally, you can choose to require reviews from code owners. If you do, any pull request that affects code with a code owner must be approved by that code owner before the pull request can be merged into the protected branch.
Require status checks before merging
Required status checks ensure that all required CI tests are passing before collaborators can make changes to a protected branch. Required status checks can be checks or statuses. For more information, see "상태 검사 정보."
You can use the commit status API to allow external services to mark commits with an appropriate status.. For more information, see "커밋 상태 정보" in the REST API documentation.
After enabling required status checks, all required status checks must pass before collaborators can merge changes into the protected branch. After all required status checks pass, any commits must either be pushed to another branch and then merged or pushed directly to the protected branch.
Any person or integration with write permissions to a repository can set the state of any status check in the repository, but in some cases you may only want to accept a status check from a specific GitHub App. When you add a required status check, you can select an app that has recently set this check as the expected source of status updates. If the status is set by any other person or integration, merging won't be allowed. If you select "any source", you can still manually verify the author of each status, listed in the merge box.
You can set up required status checks to either be "loose" or "strict." The type of required status check you choose determines whether your branch is required to be up to date with the base branch before merging.
|Type of required status check||Setting||Merge requirements||Considerations|
|Strict||The Require branches to be up to date before merging checkbox is checked.||The branch must be up to date with the base branch before merging.||This is the default behavior for required status checks. More builds may be required, as you'll need to bring the head branch up to date after other collaborators update the target branch.|
|Loose||The Require branches to be up to date before merging checkbox is not checked.||The branch does not have to be up to date with the base branch before merging.||You'll have fewer required builds, as you won't need to bring the head branch up to date after other collaborators merge pull requests. Status checks may fail after you merge your branch if there are incompatible changes with the base branch.|
|Disabled||The Require status checks to pass before merging checkbox is not checked.||The branch has no merge restrictions.||If required status checks aren't enabled, collaborators can merge the branch at any time, regardless of whether it is up to date with the base branch. This increases the possibility of incompatible changes.|
For troubleshooting information, see "필수 상태 검사 문제 해결."
Require conversation resolution before merging
Requires all comments on the pull request to be resolved before it can be merged to a protected branch. This ensures that all comments are addressed or acknowledged before merge.
Require signed commits
When you enable required commit signing on a branch, contributors can only push commits that have been signed and verified to the branch. For more information, see "커밋 서명 확인 정보."
Note: If a collaborator pushes an unsigned commit to a branch that requires commit signatures, the collaborator will need to rebase the commit to include a verified signature, then force push the rewritten commit to the branch.
You can always push local commits to the branch if the commits are signed and verified. However, you cannot merge pull requests into the branch on GitHub Enterprise Server. You can merge pull requests locally. For more information, see "로컬에서 끌어오기 요청 체크 아웃."
Require linear history
Enforcing a linear commit history prevents collaborators from pushing merge commits to the branch. This means that any pull requests merged into the protected branch must use a squash merge or a rebase merge. A strictly linear commit history can help teams reverse changes more easily. For more information about merge methods, see "끌어오기 요청 병합 정보."
Before you can require a linear commit history, your repository must allow squash merging or rebase merging. For more information, see "끌어오기 요청 병합 구성."
Require deployments to succeed before merging
You can require that changes are successfully deployed to specific environments before a branch can be merged. For example, you can use this rule to ensure that changes are successfully deployed to a staging environment before the changes merge to your default branch.
By default, protected branch rules do not apply to people with admin permissions to a repository. You can enable this setting to include administrators in your protected branch rules.
Restrict who can push to matching branches
When you enable branch restrictions, only users, teams, or apps that have been given permission can push to the protected branch. You can view and edit the users, teams, or apps with push access to a protected branch in the protected branch's settings. When status checks are required, the people, teams, and apps that have permission to push to a protected branch will still be prevented from merging into the branch when the required checks fail. People, teams, and apps that have permission to push to a protected branch will still need to create a pull request when pull requests are required.
Optionally, you can apply the same restrictions to the creation of branches that match the rule. For example, if you create a rule that only allows a certain team to push to any branches that contain the word
release, only members of that team would be able to create a new branch that contains the word
You can only give push access to a protected branch, or give permission to create a matching branch, to users, teams, or installed GitHub Apps with write access to a repository. People and apps with admin permissions to a repository are always able to push to a protected branch or create a matching branch.
Allow force pushes
By default, GitHub Enterprise Server blocks force pushes on all protected branches. When you enable force pushes to a protected branch, you can choose one of two groups who can force push:
- Allow everyone with at least write permissions to the repository to force push to the branch, including those with admin permissions.
- Allow only specific people or teams to force push to the branch.
If someone force pushes to a branch, the force push may mean commits that other collaborators based their work on are removed from the history of the branch. People may have merge conflicts or corrupted pull requests. Force pushing can also be used to delete branches or point a branch to commits that were not approved in a pull request.
Enabling force pushes will not override any other branch protection rules. For example, if a branch requires a linear commit history, you cannot force push merge commits to that branch.
You cannot enable force pushes for a protected branch if a site administrator has blocked force pushes to all branches in your repository. For more information, see "엔터프라이즈에서 리포지토리 관리 정책 적용."
If a site administrator has blocked force pushes to the default branch only, you can still enable force pushes for any other protected branch.
By default, you cannot delete a protected branch. When you enable deletion of a protected branch, anyone with at least write permissions to the repository can delete the branch.