我的git存储库中有四个分支,使用GitHub进行管理:
有没有办法限制只对一个分支([人名] - 开发)的写访问权限?我该怎么做?
供参考,类似的问题:How to write a git hook to restrict writing to branch?。
答案 0 :(得分:47)
使用GitHub时,您最好的选择是让每个开发人员拥有自己的主存储库分支。每个人都推送到他们自己的存储库,并且有人通过推送访问主存储库来处理每个开发人员的存储库。这就是大多数开源项目的工作方式。
如果使用自己的Git服务器,应该可以使用挂钩来阻止用户推送错误的分支。
答案 1 :(得分:15)
GitHub为以前的组织restrict which users can push to a branch添加了this year的功能。
答案 2 :(得分:11)
注意:Protected branches and required status checks(2015年9月3日)赢得完全允许单个分支(" [人名] - 开发&#34 ;),但它正在克隆。
分支机构将受到保护:
答案 3 :(得分:10)
您可能想要查看GitLab及其受保护的分支机构"特征。我认为它正是你正在寻找的。见Keeping your code protected。
答案 4 :(得分:7)
Esko提出了适合开源项目的出色解决方案。但是,它要求协作者团队的每个成员在GitHub上都有一个付费帐户,但这并非总是如此。
VonC指出,还有另一个解决方案只涉及一个付费的GitHub帐户。我将提供一些如何实施VonC解决方案的教程。
我们假设我们有两个私有存储库:test-test
和test-production
。第一个回购用于开发,团队的每个成员都可以访问它。第二个回购用于自动部署代码,因此对其应用了强大的访问限制。
开发人员的设置非常简单明了: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 fetch production-repo
为生产代码创建新的本地分支并切换到git checkout -b local-production
告诉git链接本地和远程分支git branch -u production-repo/production
将远程制作分支的内容下载到本地git pull
排除可能发生的冲突及其后的冲突!
现在从local-production
分支推送的所有内容都将进入test-production
回购,其他分支将被推送到test-test
回购。
好的,这很酷,但更精细([人名] - 开发)访问呢? - 您可能会问。答案是:您可以为每个开发人员创建类似于test-test
的回购,并使用相同的模式进行设置。这种方法的缺点是合作者必须克隆每个test-test-[person's name]-development
回购。
VonC还建议分叉production
repo并向它发出拉取请求 - 为什么不这样做?首先,因为你不能分叉私人仓库没有支付GitHub帐户。其次,为了允许某人分叉私人回购,你可以给他完全访问权限,这样他就可以直接推送它。并且开发人员可能会犯错误,推送到production
repo启动GitHub服务挂钩并搞砸了。如果您使用多个外包开发人员,可能会发生这种情况。
此外,我还想提醒您关于Windows官方GitHub应用中的 bug 功能。上游与原点不同的分支将进入原点。因此,使用命令行进行推送。
所有这些事情听起来有点过于复杂。但如果你不想为简单付钱,那就总是那样。
答案 5 :(得分:5)
与GitLab一样,BitBucket.org也有分支限制功能。
http://blog.bitbucket.org/2013/09/16/take-control-with-branch-restrictions/
答案 6 :(得分:1)
在Bitbucket版本中( Bitbucket v4.9.1 )您可以通过以下方式限制更改:
答案 7 :(得分:0)
不实际。 Git分支并没有像你可能认为的那样彼此截然不同。
您可能想要做的是为每个用户的开发分支使用单独的存储库。
答案 8 :(得分:0)
如果你使用bitbucket - 有处理它的分支权限。 https://confluence.atlassian.com/bitbucket/branch-permissions-385912271.html