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

Git 有没有办法使本地分支不可变?,git,branch,githooks,Git,Branch,Githooks,我非常愚蠢,有时我将一个“功能分支”合并到错误的master分支中,而不是develope分支,这当然会导致痛苦和痛苦 由于这已经是第二次发生这种情况,我想知道是否有办法使分支在本地不可变 我已经尝试使用阻止我直接对所述分支进行提交,但这并不是像中那样停止合并: git checkout master git merge wip 是否有办法防止对本地分支机构进行所有可能的更改?如果没有,是否至少可以防止推送更改?您不能使本地分支不可变(在合并操作之前没有运行的本地钩子)。但是,如果您不打算在分

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

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

我已经尝试使用阻止我直接对所述分支进行提交,但这并不是像中那样停止合并:

git checkout master
git merge wip

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

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

$ git checkout some-other-branch
$ git branch -D master
现在,当您尝试签出
主分支时,它将失败:

$ git checkout master
error: pathspec 'master' did not match any file(s) known to git.
如果您需要参考上游
主分支
分支(例如,对于
diff
),您可以直接参考它:

$ git diff origin/master

错误的提交和合并不成问题,除非你推送它们,你可以将主机复位。对所述分支的本地删除是否会导致(可能通过一些奇怪的推送)它也在远程服务器上被删除?我认为这不会带来任何额外的风险。你能用git worktree锁定分支吗?