【问题标题】:Git push with wrong user and pre-receive hook declined错误用户的 Git 推送和预接收挂钩被拒绝
【发布时间】:2016-09-07 02:51:35
【问题描述】:

我发现它与其他人遇到的不同。我有两个问题:

  1. 使用名为“v3”的用户进行 Git 推送(该用户不是我的)。命令:

但 Git 使用名为“v3”的用户推送。

  1. 在我删除用户“v3”的“推送”权限后,当我运行git push 时,它告诉我“预接收挂钩被拒绝”

错误信息:

Total 9 (delta 4), reused 0 (delta 0)
remote: GitLab: You don't have permission        
error: failed to push some refs to 'http://gitlab.zank.mobi/zank/zank_live_service.git'
To http://gitlab.zank.mobi/zank/zank_live_service.git
!   refs/heads/develop:refs/heads/develop   [remote rejected] (pre-receive hook declined)

【问题讨论】:

    标签: git push hook


    【解决方案1】:

    您可以进行交互式变基来更改提交作者。

    git rebase -i {commit hash here}
    

    然后将提交前的操作更改为编辑和保存。 保存后使用以下命令更改作者并完成变基。

    git commit --amend --author="New Author Name <newemail@address.com>"
    git rebase --continue
    

    然后您可以使用git log 检查您的提交。上述提交中的作者应该是新作者。

    当你推送时使用git push --force-with-lease

    更新

    "pre-receive hook denied" - 这个错误可能是由于下面的答案中提到的原因。

    1. Git push error pre-receive hook declined
    2. Git error when trying to push -- pre-receive hook declined

    有一个钩子脚本检查被推送的提交是否足够好,如果不是,则拒绝它并给出此错误。因此,请检查 git log 以获取您正在推送的提交,并在此处检查是否有任何提交来自没有权限的用户,或者其中一个提交中有一些代码会触发该错误。

    【讨论】:

    • 是的,我刚刚克隆了存储库。命令是'git clone username:pwd@gitlab.zank.mobi.com/zank/${project}.git'。问题已解决!但我感到困惑的是我的推送网址已更改为上述内容。对不起,我的英语太差了。非常抱歉。
    • 这很有趣!上面提到的用户“v3”已被删除。当前用户是我自己的,现在。在此之后,我使用命令 'git clone gitlab.zank.mobi/zank/zank_live_service.git' 克隆了存储库,我发现一切正常。
    【解决方案2】:

    您的提交与存储库维护者的规则不兼容,您只需要 git reset --hard HEAD ~ 1 之后根据维护者的规则进行承诺就可以了

    【讨论】:

    • 给出reset官方文档的链接,注意硬选项。
    猜你喜欢
    • 2015-04-03
    • 2011-12-20
    • 2020-03-12
    • 2012-01-03
    • 1970-01-01
    • 1970-01-01
    • 2020-07-19
    相关资源
    最近更新 更多