Git 推送错误的用户和预接收挂钩被拒绝

Git push with wrong user and pre-receive hook declined

我发现和别人遇到的不一样。我有两个问题:

  1. Git 用名为 'v3' 的用户推送(这个用户不是我的)。命令:

但是 Git 使用名为 'v3' 的用户推送。

  1. 在我去掉用户'v3'的'push'权限后,当我运行git push
  2. 时,它告诉我'pre-receive hook declined'

错误信息:

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 rebase -i {commit hash here}

然后把commit前面的action改成edit and save。 保存后使用以下命令更改作者并完成变基。

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

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

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

更新

"pre-receive hook declined" - 此错误可能是由于以下答案中提到的原因造成的。

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

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

你的提交不符合版本库维护者的规则,你只需要 git reset --hard HEAD ~ 1 之后根据维护者的规则承诺就可以了