GitHub 메인 브랜치에 대한 직접 푸시 비활성화

2230 단어 github
개발팀에서는 메인 브랜치로 직접 푸시하고 싶지 않을 것입니다. 대신 다른 개발자가 적절하게 검토할 수 있도록 풀 리퀘스트를 통해 변경해야 합니다.
저를 포함한 일부 개발자는 때때로 자신의 변경 사항을 브랜치에 넣는 것을 잊기 때문에 이러한 실수를 방지하기 위해 자동화된 확인 기능을 사용하고 싶습니다. 다음은 GitHub 기본 분기에 대한 직접 푸시를 차단하는 두 가지 방법입니다.

사전 커밋 후크



사전 커밋 프레임워크에는 특정 분기에 대한 직접 커밋을 차단하는 후크no-commit-to-branch가 포함되어 있습니다. 기본적으로 mastermain 분기를 차단합니다.
저장소 루트에 다음.pre-commit-config.yaml 파일을 추가하여 이를 구현할 수 있습니다.

repos:
  - repo: https://github.com/pre-commit/pre-commit-hooks
    rev: v4.1.0
    hooks:
      - id: no-commit-to-branch


그런 다음 pre-commit install를 실행합니다. 이제 main에 커밋하면 오류가 발생합니다.

$ git commit -m "Update again"
don't commit to branch...................................................Failed
- hook id: no-commit-to-branch
- exit code: 1


참고로 사전 커밋 후크를 제거하여 이 검사를 우회하여 완벽하게 수행할 수 있습니다.

분기 보호 규칙



GitHub에는 하나 이상의 분기에 대한 워크플로를 적용할 수 있는 분기 보호 규칙이 있습니다.
분기 보호 규칙을 만들려면 리포지토리 설정으로 이동합니다. 분기를 클릭한 다음 "분기 보호 규칙"섹션에서 규칙 추가를 클릭합니다.

브랜치 이름 패턴 아래에 "main"을 입력합니다. 그런 다음 병합 전에 풀 요청 필요를 선택하십시오.
몇 가지 추가 기능 팝업이 표시됩니다. 저는 일반적으로 개발자가 적절한 승인 없이 변경 사항을 몰래 통과할 수 없도록 승인 필요를 확인합니다.

마지막으로 관리자 포함을 선택하여 규칙이 리포지토리 관리자에게 적용되도록 할 수 있습니다. 그러나 Flux와 같은 일부 git 도구는 이 액세스 권한이 필요하며 그렇지 않으면 작동하지 않습니다. 따라서 사용 중인 도구와 필요한 권한을 잘 알고 있어야 합니다.

완료되면 규칙은 다음과 같아야 합니다.


이제 main에 직접 푸시하면 오류가 발생합니다.

$ git push
...
remote: error: GH006: Protected branch update failed for refs/heads/main.
remote: error: Changes must be made through a pull request.
To github.com:johnnymetz/my-repo.git
 ! [remote rejected] main -> main (protected branch hook declined)
error: failed to push some refs to 'github.com:johnnymetz/my-repo.git'


완벽하고 추가 기능이 포함되어 있기 때문에 두 번째 방법을 선호합니다.

좋은 웹페이지 즐겨찾기