8

目前,我正在研究“external_pub”分支。我在一个文件中做了一些更改,添加了它,提交了然后尝试推送:

git push origin external_pub

但这导致了一个错误:

remote: error: hook declined to update refs/heads/external_pub
To ssh://XXX/testing.git
! [remote rejected] external_pub -> external_pub (hook declined)
error: failed to push some refs to 'ssh://XXX/testing.git'

然后我尝试在没有任何更改的情况下推送分支以查看发生了什么(仅用于隔离问题)。我做了以下工作:

git reset --hard <commit_id> (to reset to last working sha commit)
git status

上面的命令显示:

# On branch external_pub
# Your branch is ahead of 'development' by 5 commits.
#
nothing to commit (working directory clean)

然后

git pull origin external_pub

它显示:您的分支已经是最新的

然后

git push origin external_pub

这一次,它也显示了与上述相同的错误。你能帮我解决这个问题吗?

4

4 回答 4

7

服务器上有一个拒绝推送的git 钩子。报价:

这些脚本在推送到服务器之前和之后运行。pre 钩子可以随时退出非零以拒绝推送以及向客户端打印错误消息;您可以设置任意复杂的推送策略。

要找出原因,您需要知道钩子的作用。钩子存储在hooksgit 文件夹内的文件夹中(在远程端) - 找到预接收钩子或更新钩子并检查它。

于 2013-05-22T11:43:35.347 回答
0

在 OSX 中,这通常是由于 brew ruby​​ install 和 Apple ruby​​ 2.0(默认)之间缺少 GEM 引起的。

找不到包含“require json/ext/parser”或类似的附加组件,并且在要求点出现异常。

于 2014-07-10T05:27:20.877 回答
0

我解决了这个问题。通常我在提交代码时在消息中使用 VSTSID(Visual Studio Team Services)。使用以下步骤:

  1. git commit --amend (现在是时候编辑你的提交信息了)

  2. git commit -m "vs[your_vsts_id]-your_commit_message>" 然后按

  3. i(键盘按钮)

  4. Esc(键盘按钮)

  5. :wq(保存)

之后,您将能够推送(git push)。

如果您仍然遇到问题,请输入git reset --soft HEAD^git bash。现在您可以看到所有绿色文件。这意味着,文件再次准备好提交。根据您的要求,您也可以使用 reset ( git reset) 命令。

于 2018-02-12T09:06:40.257 回答
0

如果您使用Redmine Git Hosting,请检查您的项目权限管理器角色是否已分配给尝试重写其 git 跟踪引用的用户。

请注意,我假设您知道git push -force对可能共享同一远程分支的其他用户的影响。有关更多详细信息,请查看这篇文章

于 2019-07-04T16:05:06.977 回答