Git 锁定分支,使其无法暂存/提交到?(仅合并/etc)

Git 锁定分支,使其无法暂存/提交到?(仅合并/etc),git,Git,我有一个我喜欢的master/开发的分支系统,但它有一个基本规则。在develope或master上未执行任何提交,仅合并。这很好,但最近我无意中在我的开发分支上做了一些更改/提交,这让我很恼火 我考虑将这些提交的所有权从develope转移到另一个已经存在的分支(我们称之为work),这是我本来应该处理的分支,但我决定放弃这一分支。相反,我想先解决这个问题。。如何锁定一个分支,使commit在传统的、正常的更改中不起作用 例如,如果您对“锁定”的分支进行了更改,则无法git添加,也无法git提

我有一个我喜欢的
master
/
开发的分支系统,但它有一个基本规则。在
develope
master
上未执行任何提交,仅合并。这很好,但最近我无意中在我的开发分支上做了一些更改/提交,这让我很恼火

我考虑将这些提交的所有权从
develope
转移到另一个已经存在的分支(我们称之为
work
),这是我本来应该处理的分支,但我决定放弃这一分支。相反,我想先解决这个问题。。如何锁定一个分支,使commit在传统的、正常的更改中不起作用

例如,如果您对“锁定”的分支进行了更改,则无法
git添加
,也无法
git提交-a
。我想技术上我是在要求锁定舞台,但你明白了。有什么想法吗?或者,如果我能学好git,知道如何解决提交父级问题,我会更好吗?

复制以下内容:

#!/bin/bash

if [[ `git symbolic-ref HEAD` == "refs/heads/master" ]]
then
    echo "You cannot commit in master!"
    exit 1
fi
.git/hooks/

它将阻止您提交到分支
主机
。您可以轻松地对其进行自定义,以添加更多分支或个性化错误消息等


顺便说一句,当您在
master
中进行了修改,但希望在
somebranch
中提交修改时,需要了解的一个有用技巧是:

git stash
git checkout somebranch
git stash apply

然后你就进入了
somebranch
,你的修改已经准备好提交了

看起来是个好的开始。有一个
pre-commit
hook,您可以在其中检查内容。不确定如何区分合并和正常提交。有一个
post-merge
钩子,但显然没有
pre-merge
…看起来很棒!无论如何,这可以添加到全局git配置中吗?Ie、~/.git/hooks或其他什么?@Lee Olayvar您是否已使预提交脚本可执行?@Lee此问题将帮助您使其全局化:好的,可执行性是个问题,但现在我似乎遇到了以下错误。。“/hooks/pre-commit:7:[[:not found”thinks?请原谅我缺乏sh知识:/Maybe
[[]]
是bash语法…尝试用
!/bin/sh
替换
!/bin/bash