GIT错误:期望提交者电子邮件地址为''但发现为'karan@xyz.com'。

28

当我使用Git push时,出现以下错误信息:

expected committer email '' but found 'karan@xyz.com'

我已经尝试过:

  1. 在.gitconfig文件中设置使用属性。
  2. 尝试通过对同一仓库进行不同的克隆来进行git push。
  3. 在格式化后将整个系统一起设置。

但是这些都没有奏效。我还能做些什么来解决这个问题呢?

7个回答

71

这对我有效

git config --global user.name "Correct Name" 
git config --global user.email name@email.com 
git commit --amend --reset-author

4
“git commit --amend --reset-author” 对我有用,尽管我的配置电子邮件是正确的。因此,我的提交历史没有改变。 - jmattheis
太棒了!我卡在如何修改最后一次提交上很长时间了。 - bsky

18
这适合我:
git config --global user.name "Correct Name" 
git config --global user.email name@email.com 
git commit --amend --reset-author

它会显示一个屏幕,您可以在其中编辑提交消息。编辑或保留原样后,按escape然后输入:wq并按Enter键。

接着:

git push

能否分享第三个命令的源代码,真是救命啊! - prash

7
这似乎不是git的限制,而应该是远程方(你要推送到的Git仓库托管服务/服务器)上的某种pre-receive hook。那个hook似乎会解析提交并检查提交者电子邮件是否符合特定标准,拒绝"karan@xyz.com"。
你应该与远程方管理员联系,了解情况。
OP Karan Singla评论中证实这是服务器端的问题:

问题已解决。管理员重新创建了我的帐户,现在可以正常工作了。


你的意思是说Git仓库托管服务/服务器上的电子邮件地址没有正确设置。所以这个错误只能从那边解决? - Karan Singla
@KaranSingla 看起来是这样。它是一个私人服务(或者是GitHub或BitBucket)吗? - VonC
@KaranSingla 然后我确认:与该私有设置的管理员进行检查(例如,如果该服务使用 gitolite,则可能会有一个 VREF 用于检查提交者的 ID,就像我在 https://dev59.com/dW3Xa4cB1Zd3GeqPjdp0#14605485 中提到的那样) - VonC
1
@VonC..感谢您的帮助。问题已经解决了。管理员重新创建了我的帐户,现在它可以正常工作了。 - Karan Singla
@KaranSingla 好的。我已经在答案中包含了你的结论,以增加可见性。 - VonC
显示剩余4条评论

4

我曾经遇到过类似的情况,当时在尝试将提交推送到空的Bitbucket Git仓库(内部自托管的Bitbucket实例)时涉及到了服务器端挂钩,正如@VonC所提到的。这些提交包括我和其他先前同事的。

在我的情况下,是YACC(Yet Another Commit Checker)挂钩抱怨某些电子邮件地址不为服务器所知。这些电子邮件地址是在项目初期设置阶段由离开组织的同事使用的,并且他们的帐户和电子邮件地址已经被删除。有关详细信息,请参见此Atlassian文章

但是,我没有像Atlassian文章建议的那样全局停用挂钩:

  • 首先,我明确激活了我的仓库中的挂钩,设置为空:这会在我的仓库中覆盖全局挂钩设置,使其成为NOP(“不操作”),
  • 然后我做了初始推送,
  • 最后,我重新禁用了我的仓库中的挂钩(全局插件仍处于活动状态,但只使用服务器范围的钩子设置!)。

2
git config --list --show-origin

这个功能可以让你看到设置所在的文件。在我的情况下,是一个无关的git设置文件不知怎么进入了我的便携式git安装。文件列表截图


这也帮助我找到了设置错误的地方。 - NicoleEickhoff

0
我建议您打开Git终端并设置正确的电子邮件地址。当我遇到相同问题时,这对我有效。
git config --global user.email "your_correct_email@example.com"

0

尝试像您在版本控制配置中已设置的那样设置电子邮件(我曾使用过在Bitbucket中创建SSH公钥的电子邮件)。之后,我删除并再次克隆了,并使用以下命令,它可以正常工作。

git config --global user.email name@email.com 
git commit --amend --reset-author

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接