锁定Git分支

3
有没有一种方法可以将Git分支锁定为只读和只写? 这样就不可能对该分支进行写入和克隆,但仅限于一个构建工程师?
以下是情景:
代码已经推送到Git存储库中,然后创建了开发分支。现在的想法是将主分支锁定给除一个人以外的所有人,并让开发人员从开发分支克隆并将代码推回开发分支。
只有一个人——构建工程师应该能够访问主分支。
此外,是否有一个好的GUI工具可以与Git一起使用?我们目前使用SourceTree,但它显示的树和提交信息很丑陋。
谢谢。

通常,Git服务器(如Github或Stash)将允许您防止推送到特定分支。我看不出为什么要防止从特定分支拉取 - Oliver Charlesworth
可能是A way to restrict Git branch access?的重复问题。 - Frxstrem
您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - Igor
1个回答

3

Git在仓库级别上工作,这意味着如果您可以克隆一个git仓库,您可以完全克隆它(包括所有分支)。

这意味着无法在仓库级别以下强制执行只读访问权限(例如对于某个分支)。整个仓库可以设置为私有的,但这不是git提供的功能,而是通过管理git仓库前端的访问控制器(比如Apache服务器或ssh守护进程,以及相应的用户身份验证和授权机制)。

要实现完全的只读保护,您需要两个仓库:

  • master 仓库
  • dev 仓库(通常是 master 的fork)

开发人员仍然可以通过最初分叉的原始仓库访问master。
要进行完全隔离,您需要将第一个仓库变为私有仓库,第二个仓库不再是fork的仓库。

但总的来说,有(读取)访问master并不是一种不好的做法:

  • 只要阻止非向前推送到development分支,那么就不能重新定位该development分支:任何开发都必须在该分支上进行(而不是在master上)
  • 开发人员仍然可以将其提交与master进行比较,并/或者挑选一些master的提交合并到开发分支,以便在下次合并之前包含一些在master上完成的热修复。

@jthill似乎更准确,尽管git本身根本不会拒绝对存储库的访问。您可以在存储库前面放置侦听器以拒绝访问,但是git本身只是一个版本文件管理器,其receive-pack/upload-pack将愉快地接收/传输您要求的任何内容。我已相应地编辑了答案。 - VonC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接