10

当我从计算机上的 Git Bash 提交文件并将其推送到 GitHub 上时,我不被识别为提交的作者:

无法识别的作者

指向问号时,显示的消息如下:

作者不认识。如果是您,请确保您用于提交的电子邮件地址与您的帐户相关联。您可以在“设置”中将电子邮件添加到您的帐户。

问题是我检查了几次,我可以向你保证这两个电子邮件地址是一致的。

git config --global user.email

显示与GitHub 的电子邮件设置中给出的完全相同的电子邮件地址。

我使用 Windows 7 并通过 SSH 连接到远程存储库。

4

3 回答 3

25

要为您未来的提交设置正确的名称和电子邮件:

git config --global user.name "John Doe"
git config --global user.email johndoe@example.com

如果你想修复之前未授权的提交,请按照Github 文档进行操作:

  1. git show并记住使用的电子邮件:

    $ git show
    commit ca44c93b9433346f858676a8f1b83f3d9757ec65
    Author: John Doe <johndoe@johndoes-MacBook-Pro.local>
    
  2. 创建存储库的裸克隆:

    git clone --bare https://github.com/user/repo.git
    
  3. 替换OLD_EMAIL, CORRECT_NAMECORRECT_EMAIL, 然后cd到您的存储库并粘贴脚本。按回车。

    #!/bin/sh
    
    git filter-branch --env-filter '
    
    OLD_EMAIL="your-old-email@example.com"
    CORRECT_NAME="Your Correct Name"
    CORRECT_EMAIL="your-correct-email@example.com"
    
    if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ]
    then
        export GIT_COMMITTER_NAME="$CORRECT_NAME"
        export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL"
    fi
    if [ "$GIT_AUTHOR_EMAIL" = "$OLD_EMAIL" ]
    then
        export GIT_AUTHOR_NAME="$CORRECT_NAME"
        export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL"
    fi
    ' --tag-name-filter cat -- --branches --tags
    
  4. 强制推送到 Github:

    git push --force --tags origin 'refs/heads/*'
    
于 2015-02-07T21:31:55.970 回答
10

使用git showgit show <commit-SHA>检查提交的作者电子邮件是否正确。如果没有,请使用git config user.email "<your-email>"您可能已更改该特定 repo 的设置,尽管您的全局配置。

于 2013-09-01T19:11:00.360 回答
0

好的,我找到了解决方案。

基本上,git config --global user.email包含良好的电子邮件地址,但git config user.email没有。

所以我只需要修改本地的就可以了。仍然不知道为什么。

于 2013-09-01T19:11:47.607 回答