【问题标题】:Is there a way to make a local branch immutable?有没有办法使本地分支不可变?
【发布时间】:2016-03-19 13:12:12
【问题描述】:

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

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

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

git checkout master
git merge wip

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

【问题讨论】:

  • 错误的提交和合并不是问题,直到你推送它们,你可以reset master 回来。

标签: git branch githooks


【解决方案1】:

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

$ 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

【讨论】:

  • 是否存在本地删除所述分支会导致(可能有一些奇怪的推送)它在远程服务器上被删除的风险?
  • 我不认为这会带来任何额外的风险。
  • 你可以使用 git worktree 锁定一个分支吗? git-scm.com/docs/git-worktree
猜你喜欢
  • 2019-06-11
  • 1970-01-01
  • 2023-02-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多