如何修复:无法将一些引用推送到GitLab?

11

我试图将项目推送到GitLab的代码库,但是出现了错误。

To https://gitlab.com/codersclan-interviews-frontend/codersclan-david-rose.git
 ! [remote rejected] test -> test (pre-receive hook declined)
error: failed to push some refs to 'https://gitlab.com/codersclan-interviews-frontend/codersclan-david-rose.git' 

我该如何解决这个问题?

Git 仓库并不是由我创建的,而是由客户创建的。他要求我将代码推送到我自己创建的分支上,并在完成后通知他。

为了执行这个任务,我按照以下步骤操作:

git clone https://gitlab.com/codersclan-interviews-frontend/codersclan-david-rose.git
git checkout -b 'test'
git branch test
add project
git add .
git commit -m "..."
git push origin test

我原本期待推送成功,但出现了上述错误。


可能是重复的问题,与 https://dev59.com/XWAf5IYBdhLWcg3w9Wiu 相同。 - Sijan Shrestha
5个回答

6
这也可能是由于受保护的分支名称造成的。尝试将您的分支名称更改为远程存储库上不是受保护名称的内容。hotfix、development等可能是受保护的名称。

2
与Github不同,Gitlab通过保护分支功能防止了例如在受保护的分支上执行强制推送等操作。默认情况下,主分支是受保护的。+1表示提及受保护的分支。 - Onno van der Zee
1
我把我的分支名称从“main”改为“master”,问题解决了。谢谢。 - Matin
我的GitLab存储库是新的,代码来自旧的存储库。 - user agent

5
如何解决形式为“pre-receive hook declined”的错误?该 Git 存储库不是由我创建的,而是由客户创建的。通常,您无法解决此问题。仅存储库所有者可以这样做,因为 pre-receive hook 是他们控制而您不控制的内容。Pre-receive hook 基本上是一个验证器,一种推送请求的警察。如果我们可以拟人化这个 Hook,它会检查任何被告知的推送请求方式。通常,它会查看您建议添加到存储库的每个提交,但是如果没有关于执行哪种检查的信息或提示,那么阅读您的问题的人无法猜测它可能正在进行哪些检查。对此,您也一样。您只能了解它告诉您的内容。

所以:他有告诉你任何事情吗?他说过:“我不喜欢你的提交,因为_____”吗?(填空)如果是这样,请注意这个通知。但是如果他没有告诉你任何事情,那么我们也无能为力。这不是你的错:任何编写此类自定义GitLab钩子的人都必须告诉他们的用户为什么拒绝提交,否则每个人都会一无所知。

另请参见https://docs.gitlab.com/ee/administration/server_hooks.html(但您必须是存储库的管理员才能解决问题)。


2
尽管我是管理员,但我仍然遇到了这个问题... - Wallflower
1
@Wallflower:在这种情况下,你需要修复你的程序,以便它告诉你为什么拒绝你自己的东西。 :-) - torek
同样的问题,我是所有者。 - user agent
#我也是,我没有任何钩子,只是一个简单的库所有者 :( - Guntram

1
对我来说,我不得不创建主分支并再次推送,就像我们通常推送命令一样。
创建主分支。
git branch -M main

推送更改 -
git push -u origin main

1

你忘记做了:

git add .
git commit -m "message"
git remote add origin https://gitlab.com/*******.git
git branch -M main
git push -uf origin main

git push -uf origin main 这个命令对我来说有效,但是每次推送到主分支都需要使用 git push -uf origin main 吗?我之前只是使用 git push --force-with-lease - undefined

0
我曾经遇到过这个问题,并通过切换到另一个分支来解决它。
例如: git checkout -b develop 然后, git push -uf origin develop 问题是Gitlab给出的提示信息:“您不被允许强制推送代码到该项目的受保护分支”。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接