Warm tip: This article is reproduced from serverfault.com, please click

gitlab-git push对于开发/掌握失败

(gitlab - git push fails for develop/master)

发布于 2020-11-30 09:34:16

当尝试从本地分支母版推送或开发到其相应的远程版本时,除了以下错误外,我什么也没有收到

$ git push --verbose
Pushing to server-name:repo-name/repo.git

error: failed to push some refs to 'server-name:repo-name/repo.git'

推动其他分支成功。我也可以从其他本地分支机构推动我们的开发和掌握分支机构,例如以下作品

git checkout master
git checkout -b master2
git push origin master2:master

我们的存储库是我是所有者的自我托管的GitLab实例。因此,因为从其他本地分支推送成功,所以我认为这不是许可问题。我想完全删除我的本地版本的developer和master,并检出一个干净的版本,但无济于事。

编辑
根据评论中的要求,我确实设置GIT_TRACE=2并再次运行git push。这是完整的输出:

$ git push
16:41:50.788861 exec-cmd.c:237          trace: resolved executable dir: C:/Program Files/Git/mingw64/bin
16:41:50.791871 git.c:444               trace: built-in: git push
16:41:50.800860 run-command.c:663       trace: run_command: unset GIT_PREFIX; ssh git@server-name 'git-receive-pack '\''repo-name/repo.git'\'''
16:41:51.703871 run-command.c:663       trace: run_command: .git/hooks/pre-push origin git@server-name:repo-name/repo.git
16:41:51.743860 exec-cmd.c:237          trace: resolved executable dir: C:/Program Files/Git/mingw64/libexec/git-core
16:41:51.744861 git.c:444               trace: built-in: git rev-parse --abbrev-ref HEAD

error: failed to push some refs to 'server-name:repo-name/repo.git'
16:41:51.893859 exec-cmd.c:237          trace: resolved executable dir: C:/Program Files/Git/mingw64/bin
16:41:51.895871 git.c:444               trace: built-in: git config --bool core.sparseCheckout

我将输出与git push正在运行的机器进行了比较,发现Everything up-to-date运行后它会打印出来git-receive-pack因此,我假设我的机器无法将接收到的引用与本地引用进行比较?

Questioner
sigy
Viewed
0
j6t 2020-12-03 23:03:28

git push回应有些令人惊讶

error: failed to push some refs to 'server-name:repo-name/repo.git'

没别的。但是你的踪迹显示Git运行了一个钩子:

16:41:51.703871 run-command.c:663       trace: run_command: .git/hooks/pre-push origin git@server-name:repo-name/repo.git

预推钩的手册告诉你:

这个钩子被git-push [1]调用,可以用来防止进行推送。

[...]

如果该钩子以非零状态退出,则git push将中止而不推送任何内容。关于为什么拒绝推送的信息可以通过写入标准错误来发送给用户。

这就是你的情况。看起来唯一打印出的错误是一个空行。