Vous pouvez utiliser le pré-commissionnement pour ce faire. Il possède une fonction intégrée no-commit-to-branch
qui peut être utilisé pour empêcher les commits vers une ou plusieurs branches.
Configuration
Le processus de configuration de base est le suivant :
- Installer en utilisant pip o Homebrew (instructions à https://pre-commit.com/#install )
- Créer un
.pre-commit-config.yaml
dans la Racine de votre projet (voir ci-dessous pour un premier jet)
- Installez les hooks dans votre configuration Git en exécutant
pre-commit install
.
Configuration de base pour la protection des branches
Voici une configuration de base qui comprend uniquement le no-commit-to-branch
crochet :
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v3.3.0
hooks:
- id: no-commit-to-branch
args: ['--branch', 'master']
Si vous voulez protéger plusieurs branches, vous pouvez utiliser include multiple --branch
dans la liste des arguments :
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']
Tout cela n'est-il pas exagéré ?
Pre-commit a de nombreux autres des crochets intégrés, et une large collection de crochets construits par la communauté qui va transformer la façon dont vous nettoyez et validez vos commits. La raison pour laquelle je mentionne ceci est que, bien que cet outil puisse être excessif pour simplement empêcher les commits vers une branche protégée, il possède de nombreuses autres fonctionnalités qui en font un ajout simple et convaincant à tout projet Git.
6 votes
"fast-forward commits" n'est pas une chose. Les commits sont juste des commits,
git commit
en fait un nouveau, il n'y a pas d'avance rapide. Il semble que vous vouliez simplement interdire les commits ordinaires lorsque la branche courante estmaster
Dans ce cas, il convient d'examiner lepre-commit
crochet.