出现 git 推送错误:"You cannot push the following commits as they are authored by users not known to Stash



我的命令是git push -u origin feature_branch.除了标题中的错误消息外,我还收到以下消息:

Check your gitconfig has the correct author name, or contact an administrator

gitconfig 是正确的,为了肯定起见,我从 bitbucket 复制粘贴了用户名和电子邮件,然后重试。

! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'ssh://companyname.com...'

我检查并确认我推送到的存储库根本没有配置任何预接收钩子。

我可以毫无问题地克隆存储库,只有当我尝试推送更改时,我才会收到此错误。我对 git 的了解还不够多,不知道除了错误消息已经建议的内容之外,我应该从哪里开始寻找缩小问题范围。

这完全是猜测,但是...

预接收钩子实际上看不到您的 git配置,它只能看到提交的用户名和电子邮件地址。 您的推送请求(大概)要求他们创建feature_branch名称。 它们有一个预接收钩子(这是此消息和失败的来源),它可以看到您创建此分支名称的请求并检查一组提交。 确切地说,组提交,以及它如何检查它们,只有预接收钩子本身知道。 (如果它的诊断告诉你它不喜欢哪个提交,这可能会有所帮助。 但再次猜测,我会说他们使用了:

git rev-list <hash-id> --not --all

这将使他们获得可从您推送的分支尖端访问的任何提交的哈希 ID,这些提交无法从他们自己的任何分支提示访问。 如果运行:

git fetch origin

然后:

git log --pretty=fuller feature_branch --not --remotes=origin

这将显示您为feature_branch发送的哪些提交不在它们自己的任何分支中,这将是他们正在检查的一组提交。--pretty=fuller将让你的 Git 向你显示每个此类提交的作者和提交者行。

检查这些可能会有所帮助,因为可能正是他们自己的预接收钩子正在检查和拒绝的那些东西。

同样,除了控制这个预接收钩子的人之外,没有人可以确定这一点,因为我们看不到预接收钩子代码。 我们只看到它的输出,这是你在开头引用的那行:

Check your gitconfig has the correct author name, or contact an administrator

由此,我们——我的意思是也包括你:每个无法控制这个预接收钩子的人——都必须猜测他们的预接收钩子不喜欢你对他们的 Git 的请求让他们的 Git 创建名称feature_branch,指向一些特定的提交哈希 ID。

事实证明,存储库期望的用户名与在 bitbucket 中设置的用户名不同。据我所知,这并不是真正发生在 github 上的事情,但存储库的设置是为了让您使用 SSH 密钥进行身份验证,然后以公司记录中的名称提交。我确保他们的名字匹配,但我有一个未陈述的假设,他们应该匹配,这不是真的。

相关内容

最新更新