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

Is there a way to make a local branch immutable?

我非常愚蠢,有时我将 "feature branch" 合并到错误的 master 分支而不是 develop 分支,这当然会导致痛苦。

因为这已经是第二次发生了,我想知道是否有办法让我的分支在本地不可变。

我已经尝试使用 this pre-commit hook 来阻止我直接在所述分支上进行提交,但这并没有停止合并,如:

git checkout master
git merge wip

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

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

$ git checkout some-other-branch
$ git branch -D master

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

$ git checkout master
error: pathspec 'master' did not match any file(s) known to git.

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

$ git diff origin/master