我的git存储库中有四个分支,使用GitHub进行管理:
有没有办法限制只有一个分支([人名] - 开发)的写访问权限?我该怎么做?
供参考,一个类似的问题:如何编写一个git钩子来限制写入分支?.
Esk*_*ola 47
使用GitHub时,最好的选择是让每个开发人员拥有自己的主存储库分支.每个人都推送到他们自己的存储库,并且有人通过推送访问主存储库来处理每个开发人员的存储库.这是大多数开源项目的工作方式.
如果使用自己的Git服务器,应该可以使用挂钩来防止用户推送错误的分支.
Von*_*onC 11
注意:受保护的分支机构和所需的状态检查(2015年9月3日)不会完全允许单个分支("[人名] - 开发"),但它会被克隆.
分支机构将受到保护:
小智 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
从新的repo中获取数据 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回购并向它发出拉动请求 - 为什么不这样做呢?首先,因为你没有支付GitHub帐户就无法分叉私人仓库.其次,为了允许某人分叉私人仓库,你可以让他完全访问它,这样他就可以直接推送它.而开发人员可能会犯错误,推动productionrepo启动GitHub服务挂钩并搞砸了.如果您使用多个外包开发人员,这可能会发生.
另外,我想提醒您关于Windows官方GitHub应用程序中的错误功能.上游与原点不同的分支将进入原点.因此,使用命令行进行推送.
所有这些听起来都有些过于复杂.但如果你不想为简单付出代价就总是这样.
与GitLab一样,BitBucket.org也有分支限制功能.
http://blog.bitbucket.org/2013/09/16/take-control-with-branch-restrictions/