合并-Git:防止在master分支中提交

(为简单起见),我的Git-repo中有master分支和--no-ff。我想确保dev分支始终正常工作,所以我所做的所有工作都应该在dev分支中。

但是,当我将更改与master合并在一起时,我倾向于留在--no-ff分支中,然后继续工作(因为我忘记签出dev分支)。

我可以为master分支建立一条规则,该规则指出我无法进行提交,并且不能进行快速合并,但是只有--no-ff从另一个分支进行合并?

这必须适用于私有托管存储库(ergo不适用于GitHub和BitBucket)。

Rasmus Bækgaard asked 2020-02-22T02:43:16Z
2个解决方案
106 votes

对的,这是可能的。 您必须创建预提交钩子,该钩子拒绝对master分支的提交。 当您调用merge命令时,Git不会调用预提交钩子,因此该钩子将仅拒绝常规提交。

  1. 转到您的存储库。
  2. 使用以下内容创建文件.git / hooks / pre-commit:

    $ chmod +x .git/hooks/pre-commit
    
  3. 使它可执行(在Windows上不是必需的):

    $ chmod +x .git/hooks/pre-commit
    

要禁用快进合并,您还必须在.git / config文件中添加以下选项:

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

如果您还希望保护远程主机上的master分支,请检查以下答案:如何限制对git上master分支的访问

qzb answered 2020-02-22T02:44:04Z
0 votes

通过以下方式全局安装

git config --global core.hooksPath ~/githooks

并将该pre-commit文件移动到该目录中

Michel Samia answered 2020-02-22T02:44:28Z
translate from https://stackoverflow.com:/questions/40462111/git-prevent-commits-in-master-branch