programing

마스터 분기에서 커밋 방지

javajsp 2023. 10. 26. 20:44

마스터 분기에서 커밋 방지

(간단하게 설명하자면) 저는master가지와 가dev내 깃 저장소에.나는 그것을 확실히 하기를 원합니다.master지점은 항상 작동하기 때문에 내가 하는 모든 일은 그 안에 있어야 합니다.dev분점.

하지만 내가 내 변경사항을 에 병합됩니다.--no-ff병합, 나는 머무르는 경향이 있습니다.master브랜치, 그리고 계속 작업하세요 (내가 내 것을 확인하는 것을 잊어버렸기 때문에)dev가지).

제가 규칙을 세울 수 있을까요?master브랜치, 커밋을 할 수 없다고 명시하고, 빨리 감기 합병을 하지만, 오직--no-ff다른 지점에서 합병되는 건가요?

이는 개인 호스팅된 리포지토리(GitHub 또는 Bitbucket이 아닌 ergo)에 대해 작동해야 합니다.

네, 가능합니다.마스터 분기에 대한 커밋을 거부하는 사전 커밋 후크를 만들어야 합니다.병합 명령을 호출할 때 Git는 사전 커밋 후크를 호출하지 않으므로 이 후크는 일반 커밋만 거부합니다.

  1. 저장소로 이동합니다.

  2. 다음 내용으로 .git/hooks/pre-commit 파일을 만듭니다.

    #!/bin/sh
    
    branch="$(git rev-parse --abbrev-ref HEAD)"
    
    if [ "$branch" = "master" ]; then
      echo "You can't commit directly to master branch"
      exit 1
    fi
    
  3. 실행 가능(Windows에서는 필요 없음):

    chmod +x .git/hooks/pre-commit
    

빨리 감기 병합을 사용하지 않도록 설정하려면 .git/config 파일에 다음 옵션을 추가해야 합니다.

[branch "master"]
    mergeoptions = --no-ff

원격지의 마스터 브랜치도 보호하려면 다음 답변을 확인합니다.Git에서 마스터 브랜치에 대한 접근을 제한하는 방법

사전 커밋 유틸리티를 사용하여 이 작업을 수행할 수 있습니다.내장되어 있습니다.no-commit-to-branch하나 이상의 분기에 대한 커밋을 방지하는 데 사용할 수 있는 후크.

세우다

기본 설정 프로세스는 다음과 같습니다.

  • pip 또는 Homebrew를 사용하여 설치(https://pre-commit.com/ #install에서 instruction)
  • 만들기.pre-commit-config.yaml프로젝트의 루트에 있는 파일(첫 번째 초안은 아래 참조)
  • 를 실행하여 Git 구성에 후크 설치pre-commit install.

가지 보호를 위한 기본구성

여기에 단지 다음을 포함하는 기본적인 구성이 있습니다.no-commit-to-branch후크:

repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
  rev: v3.3.0
  hooks:
    - id: no-commit-to-branch
      args: ['--branch', 'master']

여러 분기를 보호하려면 여러 분기 포함을 사용할 수 있습니다.--branch인수 목록의 인수:

repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
  rev: v3.3.0
  hooks:
    - id: no-commit-to-branch
      args: ['--branch', 'master', '--branch', 'staging']

이게 다 오버킬 아닌가요?

사전 커밋에는 다른 많은 기본 제공 후크가 있으며 커밋을 정리하고 검증하는 방식을 변화시킬 커뮤니티에서 제공하는 많은 후크 컬렉션이 있습니다.제가 이를 언급하는 이유는 이 도구가 보호된 분기에 대한 커밋을 방지하는 데는 무리가 있을 수 있지만, Git 프로젝트에 대한 매력적이고 간단한 추가 기능을 제공하는 다른 많은 기능을 가지고 있기 때문입니다.

다음을 통해 전체적으로 설치하는 것이 타당할 수 있습니다.

git config --global core.hooksPath ~/githooks

그걸 옮기면서 말입니다pre-commit그 디렉토리에 파일을 저장합니다.

언급URL : https://stackoverflow.com/questions/40462111/prevent-commits-in-master-branch