github - Github 仅允许协作者通过拉取请求推送更改
问题描述
刚加入 GitHub,我创建了一个名为 X 的远程PRIVATE存储库,并有一个合作者 - 人 Y。目前,人 Y 可以简单地接受邀请成为合作者,并且无需分叉存储库,只需进行编辑,提交更改,它出现在主分支上。这显然是不可取的,而且默认情况下甚至允许这样做似乎是荒谬的。
我希望 Y 人(合作者):
- 必须分叉存储库并仅在分叉的存储库上工作
- 只能通过拉取请求进行更改
- 在提交给 master 之前,必须有一个拉取请求,由我接受/批准。
我查看了一些答案,并尝试了: - 进入设置 - 进入分支(左侧) - 更改访问权限
但是,我注意到它需要升级。
我确定我听说过/读到 GitHub 允许最多三个合作者使用全部功能。
SO上的其他类似问题,有0个答案。
我也在设置中看到了这个选项:
“在合并拉取请求时,您可以允许合并提交、压缩或变基的任意组合。必须启用至少一个选项。如果您在任何受保护的分支上启用了线性历史记录要求,则必须启用压缩或变基。”
允许合并提交使用合并提交将所有提交从头分支添加到基本分支。
我不清楚上面指的是什么。如果我检查一下,它会阻止协作者的所有提交在未经授权的情况下直接推送到主分支吗?
更新:
我注意到一些答案表明无法做到这一点(保护分支),但简单地同意始终创建拉取请求是一种很好的做法。我要求拉取请求是强制性的——如果不强制执行,显然可能会意外推送到 master。
那么问题是,有什么解决方法(无需付费)。
分叉?您如何“授予”另一个用户对 PRIVATE 存储库的访问权限。我只能看到通过邀请成为协作者来共享访问权限的选项。
有一个选项说: 默认分支 默认分支被认为是存储库中的“基础”分支,所有拉取请求和代码提交都会自动针对该分支进行,除非您指定不同的分支。
在上述情况下,我将如何创建 master 分支的副本,以供协作者使用,以便实际的 master 分支受到“保护”?
- 我能想到的唯一其他选择是创建三个级别。
一:我:项目(Master 分支受到保护,因为我只授予 -me 2 的访问权限) 二。我 2:我被授予合作者访问权限并且我分叉了这个项目。(称它为别的) 三。然后,我将分叉项目的协作者访问权限(如果允许)授予其他人。这样,协作者可以对第 2 部分中的分叉项目进行更改,但不能对第 1 部分中的原始主项目进行更改。
同样,当只需要保护主分支时,这一切似乎都非常冗长和不必要,只允许通过需要授权的拉取请求推送到主控。
还有其他选择吗?任何意见或建议将不胜感激。
解决方案
推荐阅读
- python - Python 将回车视为换行符。我能做些什么呢?
- javascript - 比较 2 个对象数组中的特定键
- c# - 如何使用 Prism.Forms 框架从普通页面导航到 MasterDetailPage?
- deployment - 为什么在 minikube 中正确部署服务时,应用程序部署状态为“Available:0”?
- html - 如何在有课程的 td 中获取内容?
- python - Tensorflow toco 工具将 Conv2D 转换为 DepthwiseConv2DNative,但简化图不会产生与原始图相同的结果
- c++ - 为什么现代 C++ 仍然使用 int argc, char** argv 保留旧的 C 风格原型
- r - 在编写 R 函数时使用多个空参数的最佳实践
- firebase - 将 Firebase 帐号与 G Suite 帐号同步
- python - 运行 Flask App 时出现 VS Code 错误