当前位置: 首页 > 知识库问答 >
问题:

防止在GitHub上推送到master?

姜嘉良
2023-03-14

GitHub允许你配置你的库,让用户无法强制推送至master,但是有没有办法完全防止推送至master?我希望这样做,以便向master添加提交的唯一方式是通过GitHub pull请求UI。

共有3个答案

冯元魁
2023-03-14

当启用状态检查时,直接推送到remote的master会被拒绝,这意味着在remote的master上添加提交的唯一方法是在GitHub上合并pull请求(通过状态检查)。

下面是我对需要状态检查的主分支的实验结果:

  1. 在我的电脑上的主分支上创建提交。
  2. 按下遥控器的主机
  3. 出现拒绝消息。最终提交不会被推到远程
C:\GitRepo\GitHub\TomoyukiAota\photo-location-map [master ↑1]> git push
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 12 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 305 bytes | 305.00 KiB/s, done.
Total 3 (delta 2), reused 0 (delta 0)
remote: Resolving deltas: 100% (2/2), completed with 2 local objects.
remote: error: GH006: Protected branch update failed for refs/heads/master.
remote: error: 3 of 3 required status checks are expected.
To https://github.com/TomoyukiAota/photo-location-map.git
 ! [remote rejected] master -> master (protected branch hook declined)
error: failed to push some refs to 'https://github.com/TomoyukiAota/photo-location-map.git'
C:\GitRepo\GitHub\TomoyukiAota\photo-location-map [master ↑1]>
帅银龙
2023-03-14

当前接受的答案实际上是正确的,但如果你是组织所有者或具有管理员权限(如果你创建了存储库,则情况就是如此),你仍然可以推送到受保护的分支。来自 https://help.github.com/en/articles/about-branch-restrictions 的 Github 文档:

组织所有者和具有存储库管理权限的人员始终能够推送到受保护的分支。

对于任何其他类型的协作者,git ush都会失败。

如果您真的想禁用推送,那么您必须在本地设置它,方法是为前面提到的分支配置无效的pushRemote

git config branch.master.pushRemote no_push

或者创建一个预推挂钩,如下所示:https://gist.github.com/vlucas/8009a5edadf8d0ff7430

元俊雅
2023-03-14

从最初的问题/答案开始,Github在受限分支UI中添加了一个新选项,允许您进行设置。

合并前需要对拉取请求进行审查启用后,所有提交都必须提交到不受保护的分支,并通过拉取请求提交,拉取请求具有所需数量的批准审查,并且在合并到与此规则匹配的分支之前没有请求任何更改。

 类似资料:
  • 我有一个Github repo项目,使用Github操作和一个docker文件来构建SpringBoot Java项目 我想从Github repo下载来自Github repo的定制工件包,并能够将工件上传到其中。 所以我按照配置Apache Maven用于GitHub包的链接,将该部分添加到settings.xml文件中: 为了从dockerfile构建中发布包,我在pom.xml中添加了以下

  • 每当我试图从命令行将更改推送到远程存储库时,我都会收到以下错误: (我已经替换了org和repo名称,但它们绝对是正确的名称)。 我已检查是否具有对存储库的写入权限。我可以通过网站创建分支和写入文件,并在本地将这些更改拉回来。 我正在使用Git Credential Manager for Windows(GCM)使用github进行身份验证,gitconfig中有以下内容: 我运行的是Windo

  • 我是git和github的新手。我在github上设置了一个repo,我可以把本地的东西推送到这个远程repo上。现在问题来了:就在我将一些内容推送到远程repo,并刷新页面之后,我可以看到更改被上传(例如,如果我编写了一个readme.txt并将其推送到远程repo,而这样的readme.txt并不存在,那么在推送并刷新页面之后,它就会出现)。 那么有人可以在github上自由更改我的回购吗?或

  • 我在GitHub上创建了一个名为“消息”的存储库和一个同名的本地存储库。我试图将文件从我的本地回购到远程,但得到这个错误: 致命:远程端意外挂断。 我想这是一个认证问题。当我逃跑时 我确实收到了一条信息,表明我的钥匙坏了。所以我将我的~/. ssh/github_rsa.pub添加到GitHub帐户中的SSH密钥(删除了已经存在的密钥),并再次运行该命令。这次我收到一条消息说- 嗨,修女!您已成功

  • 我在我的Raspberry Pi上克隆了GitHub上的一个项目,创建了一个新的分支,并将所有内容推送到存储库中。为此,我需要下一个命令: 我遇到的问题是我无法将分支推到GitHub.com。我需要输入我的用户名和密码,但我不能使用2FA。这是Git或GitHub中的一个bug吗?是否有方法获得身份验证密钥并输入它? 我不会在GitHub上启用2fa。

  • 我有一个maven项目,有很多模块(和模块内的模块)。我正在使用maven释放插件来控制pom.xml文件中的版本。 当运行命令plugin时,会相应地推送两个带有消息的提交:“[maven-释放-插件]准备发布v0.9.0.38”和“[maven-释放-插件]准备下一次开发迭代”。这里的第二个只是快照版本。 以下是maven release插件设置: 推送时,我也将标签设置为远程git项目(您可