收到了git push错误:“您无法推送以下提交,因为这些提交是由作者姓名未知的Stash未知的用户创作的”

时间:2019-06-20 18:25:46

标签: git bitbucket

我的命令是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的了解不多,除了已经提示的错误消息以外,我不知道该从哪里开始缩小问题的范围。

2 个答案:

答案 0 :(得分:1)

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

一个预接收钩子实际上看不到您的git config ,它只能看到提交时的用户名和电子邮件地址。您的推送请求(大概)要求他们创建其feature_branch名称。他们有一个预接收钩子(这是此消息和故障的全部出处),该钩子会看到您创建此分支名称的请求并检查了一些提交。确切来说,哪个提交集以及如何检查它们的方式,只有预接收钩子本身知道。 (如果它的诊断程序告诉您它不喜欢哪个提交,这可能会有所帮助。)但是,猜测,我会说他们使用了:

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

,这将使它们从您要推送的分支的尖端可到达的任何提交的哈希ID,而从它们自己的分支尖端的任何不可到达的哈希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

由此,我们-借此也包括您在内:每个控制此预接收挂钩的人都必须猜测他们的什么 pre-receive钩子不喜欢您向其Git发出的请求,要求其Git创建名称feature_branch,指向某个特定的提交哈希ID。

答案 1 :(得分:0)

找出存储库所期望的用户名与在bitbucket中设置的用户名不同。据我所知,这并不是真的在github上发生的事情,但是已建立了存储库,因此您可以使用SSH密钥进行身份验证,然后使用公司记录中的名称进行提交。我确保它们的名称匹配,但是我有一个未声明的假设,即它们应该匹配,这是不正确的。