【问题标题】:How to force push to Gitlab如何强制推送到 Gitlab
【发布时间】:2019-06-03 15:58:08
【问题描述】:
git push --force gitlab master                                                                                  
Enumerating objects: 50, done.
Counting objects: 100% (50/50), done.
Delta compression using up to 8 threads
Compressing objects: 100% (29/29), done.
Writing objects: 100% (40/40), 12.22 KiB | 4.07 MiB/s, done.
Total 40 (delta 26), reused 18 (delta 11)
remote: GitLab: You are not allowed to force push code to a protected branch on this project.
To gitlab.com:xxx/yyyy.git
 ! [remote rejected]     master -> master (pre-receive hook declined)
error: failed to push some refs to 'git@gitlab.com:xxx/yyyy.git'

我应该怎么做才能将我的提交推送到 Gitlab?我使用了几个遥控器,其他遥控器都可以,我能完成

git push --force some_other_remote master      

【问题讨论】:

标签: git gitlab git-push


【解决方案1】:

来自official documentation on dealing with Protected Branches

  1. 导航到项目的设置 ➔ 存储库
  2. 滚动找到受保护的分支部分。
  3. 从“分支”下拉菜单中,选择要保护的分支并单击“保护”。

按照上述步骤,您应该会看到一个类似于下面这个的框。

在那里,您可以点击任一:

  • “允许强制按下”切换按钮,或
  • 橙色的取消保护按钮

对于您要强制推送到的分支,例如,master

如果您不想浏览导航栏,也可以填写此 URL 模板:

https://gitlab.com/<USERNAME>/<PROJECTNAME>/settings/repository#js-protected-branches-settings

并将&lt;USERNAME&gt;&lt;PROJECTNAME&gt; 分别替换为您的特定用户名和项目名称。

注意,“允许强制推送”按钮可能比取消选择 Unprotect 按钮更受欢迎,因为分支保护为您提供了额外的安全性,防止意外删除您的分支。但任何一个选项似乎都有效。

更多帮助:

【讨论】:

  • 您不必取消保护,只需打开“允许强制推送”开关即可。
  • @user31389 谢谢!我进行了编辑以反映此替代选项
【解决方案2】:

正如 GitLab documentation 所说: 默认情况下,受保护的分支会做四件简单的事情:

  • 它会阻止除具有维护者权限的用户之外的所有人创建它(如果尚未创建)。
  • 它可以防止来自所有人的推送,除了具有允许权限的用户。
  • 它可以防止任何人强制推送到分支。
  • 它可以防止任何人删除分支。

所以你需要暂时解除对分支的保护。最后,将其恢复到原来的状态。

为此:

  1. 导航到项目的设置 ➔ 存储库
  2. 滚动找到受保护的分支部分。
  3. 您要强制推送的分支不受保护
  4. 强制推送
  5. 在项目的设置中恢复所有设置 ➔ 存储库 (gitlab)

【讨论】:

  • 这已经得到回答(请参阅 Eric Leung 的赞成回答),并且您的部分回答直接从链接文档中复制。请在复制之前检查其他答案
【解决方案3】:
  1. 暂时解除对 master 分支的保护。
  2. 像以前一样推动。
  3. 然后恢复对分支的保护。

【讨论】:

  • 这是我必须做的。找不到 Toogle 按钮强制推送。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-10-02
  • 2021-11-05
  • 2018-12-30
  • 2014-12-08
  • 2015-09-10
  • 2021-03-18
相关资源
最近更新 更多