有没有办法使本地分支不可变?

Sho*_*hoe 5 git branch githooks

我非常愚蠢,有时我将“功能分支”合并到错误的master分支而不是develop分支中,这当然会导致痛苦和痛苦。

由于这是第二次发生这种情况,我想知道是否有办法使分支在本地不可变。

我已经尝试过使用此预提交挂钩来阻止我直接在所述分支上进行提交,但这并不会阻止合并,如下所示:

git checkout master
git merge wip
Run Code Online (Sandbox Code Playgroud)

有没有办法阻止对本地分支的所有可能的更改?如果不是,是否至少可以阻止更改被推送?

lar*_*sks 2

您不能使本地分支不可变(合并操作之前没有运行的本地挂钩)。但是,如果您不打算在分支上进行提交,则不要检查它。如果您已经签出它,请删除本地分支:

$ git checkout some-other-branch
$ git branch -D master
Run Code Online (Sandbox Code Playgroud)

现在,当您尝试签出master分支时,它将失败:

$ git checkout master
error: pathspec 'master' did not match any file(s) known to git.
Run Code Online (Sandbox Code Playgroud)

如果您需要引用上游master分支(例如,对于 a diff),您可以直接引用它:

$ git diff origin/master
Run Code Online (Sandbox Code Playgroud)