我的 git 存储库中有四个分支,它们是用 GitHub 管理的:
有没有一种方法可以限制只对一个分支([人名]-开发)进行写访问? 我该怎么做?
作为参考,一个类似的问题: 如何编写一个 git 钩子来限制写分支?。
实际上并非如此。 Git 分支之间并没有像你想象的那样明显不同。
这里您可能需要为每个用户的开发分支使用一个单独的存储库。
在使用 GitHub 时,最好的选择是让每个开发人员都拥有自己的主存储库分支。每个人都推送到自己的存储库,而有推送访问权限的人从每个开发人员的存储库中提取主存储库句柄。这就是大多数开源项目的工作方式。
如果使用您自己的 Git 服务器,应该可以使用钩子来防止用户推送到错误的分支。
Esko 提出了适合于开源项目的伟大解决方案。然而,它要求协作者团队的每个成员在 GitHub 上都有一个付费账户,这并不总是正确的。
VonC 指出,还有另一种解决方案,只需要一个付费的 GitHub 帐户。我将提供一些如何实现 VonC 解决方案的教程。
假设我们有两个私有存储库: test-test和 test-production。第一个回购是为了开发,团队的每个成员都可以访问它。第二个回购是为了代码的自动部署,因此对其应用了严格的访问限制。
test-test
test-production
开发人员的设置非常简单和直接: git clone https://github.com/<username>/test-test,完成他们的工作并将其推回。
git clone https://github.com/<username>/test-test
合作者的设置有点复杂:
从发展回购 git clone https://github.com/<username>/test-test拉分支
添加远程存储库 git remote add production-repo https://github.com/<username>/test-production.git
git remote add production-repo https://github.com/<username>/test-production.git
从新的回购 git fetch production-repo中获取数据
git fetch production-repo
为生产代码创建新的本地分支,并切换到 git checkout -b local-production
git checkout -b local-production
告诉 git 链接本地和远程分支 git branch -u production-repo/production
git branch -u production-repo/production
将远程生产分支的内容下载到本地的 git pull
git pull
找出可能的冲突,就是这样!
现在,从 local-production分行推出的所有东西都将进入 test-production回购协议,其他分行将被推入 test-test回购协议。
local-production
好的,这很酷,但是更细粒度([人名]-开发)的访问呢?你可以问。答案是: 您可以为每个开发人员创建类似于 test-test的回购协议,并使用相同的模式设置它们。这种方法的缺点是合作者必须克隆每个 test-test-[person's name]-development回购协议。
test-test-[person's name]-development
VonC 还建议支付 production回购和拉请求,为什么不这样做呢?首先,如果你没有支付 GitHub 账户,你就不能进行私人回购。其次,为了让某人分享 二等兵回购协议,你要给他完全访问权限,这样他就可以直接推动回购协议。开发人员可能会犯错误,推到 production回购启动 GitHub 服务挂钩和搞砸事情。如果您使用多个外包开发人员,这种情况很可能会发生。
production
另外,我还想提醒你,Windows 的官方 GitHub 应用程序中有一个 臭虫特性。上游与原点不同的分支将进入原点。因此使用命令行进行推送。
所有这些听起来都有点过于复杂了。但是,如果你不想为简单付钱,它总是这样的。
你可能想看看 GitLab 和它的“受保护的分支”特性。我觉得这正是你想要的。参见 保护你的代码。
和 GitLab 一样,BitBucket.org 也有一个分支限制特性。
Http://blog.bitbucket.org/2013/09/16/take-control-with-branch-restrictions/
注意: 受保护的分支和必要的状态检查(2015年9月3日)不允许 没错单一分支(“[人名]-开发”) ,但它会被克隆。
该分行将受到保护:
GitHub 在之前的 今年中为组织向 限制哪些用户可以推送到分支添加了这个功能。
如果你使用 bitbucket-有分支权限来处理。 Https://confluence.atlassian.com/bitbucket/branch-permissions-385912271.html
在 Bitbucket 版本(Bitbucket v4.9.1)中,你可以通过以下方式限制更改:
下列行动可以通过限制:
输入异常用户;