31

我在尝试将我的提交链接到我的 GitHub 帐户时遇到问题。提交正在 GitHub 上以我的图片显示的方式报告。值user.nameuser.email是正确的,还有其他要检查的想法吗?

提前致谢

提交示例

4

7 回答 7

58

即使您的设置可能看起来正确,但此错误意味着该user.email字段中的某些内容不正确,这会导致 Github 关于提交者是谁的错误信息。一个小小的错字就可能把整个事情搞砸。修复在第三步,前两步有助于确定问题所在。

首先,运行git config -l以检查您的设置并确保其中没有意外情况。运行git log并记下该Author字段的外观。它的格式应该是Author: Your-Name <your-github-email@example.com>. 就 Github 而言,括号内的部分是重要的部分。

其次,如果您过去能够成功提交某些内容,请打开该 repo 并运行git log以找到一切正常的提交。Author对照不起作用的字段检查该字段,看看是否有区别。

第三,如果有差异,切换回有问题的 repo 并运行git config --global user.email correct-email@example.com

如果问题仍然存在,请检查您的 Github电子邮件设置,并确保您使用的电子邮件地址已添加到您的帐户中。

有关详细信息,请参阅此帮助文章

于 2014-10-14T18:49:59.493 回答
5

我遇到了类似的问题,@stvnrlly 的回复很有用。就我而言,运行时:

git config --global user.email 

CL 会吐出“email@email.com”,这是错误的,因为它应该显示没有“”的电子邮件地址。所以在我的情况下,设置没有正确完成。希望能帮助到你。

于 2018-08-23T02:00:00.410 回答
2

我今天也遇到了这个问题,但就我而言,提交已经很老了,我在使用错误的细节提交一周后发现了这个问题。所以这个答案适用于当你发现你的提交没有链接到你的 GitHub 时。首先更正您git config已经提到的设置。

现在,要修改您的提交历史记录,请按照下列步骤操作:

  1. 转到您的工作目录并克隆您的存储库
$ cd working_dir
$ git clone --bare https://github.com/user/repo.git
  1. 转到克隆的目录
$ cd repo.git
  1. 由于各种原因,您的提交可能未链接到您的原始 GitHub,例如不正确/旧的电子邮件、不正确/旧的用户名等。此外,您的提交和/或作者详细信息可能不正确。我列出了针对不同情况的不同步骤。

    3.1错误的电子邮件链接

    如果提交详细信息不正确:

    将以下代码粘贴到您的命令行中。

    git filter-branch --env-filter '
    OLD_EMAIL="old@email.com"
    CORRECT_NAME="correct-username"
    CORRECT_EMAIL="correct@email.com"
    if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ]
    then
      export GIT_COMMITTER_NAME="$CORRECT_NAME"
      export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL"
    fi
    ' --tag-name-filter cat -- --branches --tags
    

    如果作者详细信息不正确:

    将以下代码粘贴到您的命令行中。

    git filter-branch --env-filter '
    OLD_EMAIL="old@email.com"
    CORRECT_NAME="correct-username"
    CORRECT_EMAIL="correct@email.com"
    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
    

    在这里,OLD_EMAIL用您的旧电子邮件地址、CORRECT_NAME您当前的用户名和CORRECT_EMAIL您当前正确的电子邮件地址替换。

    您可以使用以下命令检查您的旧电子邮件地址:git log --pretty="format:%ae"

    3.2. 错误的用户名链接

    如果提交详细信息不正确:

    将以下代码粘贴到您的命令行中。

    git filter-branch --env-filter '
    OLD_NAME="old-username"
    CORRECT_NAME="correct-username"
    CORRECT_EMAIL="correct@email.com"
    if [ "$GIT_COMMITTER_NAME" = "$OLD_NAME" ]
    then
      export GIT_COMMITTER_NAME="$CORRECT_NAME"
      export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL"
    fi
    ' --tag-name-filter cat -- --branches --tags
    

    如果作者详细信息不正确:

    将以下代码粘贴到您的命令行中。

    git filter-branch --env-filter '
    OLD_NAME="old-username"
    CORRECT_NAME="correct-username"
    CORRECT_EMAIL="correct@email.com"
    if [ "$GIT_AUTHOR_NAME" = "$OLD_NAME" ]
    then
      export GIT_AUTHOR_NAME="$CORRECT_NAME"
      export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL"
    fi
    ' --tag-name-filter cat -- --branches --tags
    

    在这里,OLD_NAME用您在提交时出现的旧名称/用户名、CORRECT_NAME您当前的用户名和CORRECT_EMAIL您当前正确的电子邮件地址替换。

    您的输出应如下所示:

    Rewrite c9ef481aca2cbeac930da8b1250c7f81ac779372 (19/20) (2 seconds passed, remaining 0 predicted)
    Ref 'refs/heads/main' was rewritten
    

    如果您的输出如下所示,请转到第 4 步。

  2. 将修改后的历史推送到您的原始存储库。

$ git push --force --tags origin 'refs/heads/*'

您的输出应如下所示:

Username for 'https://github.com': user
Password for 'https://user@github.com':
Enumerating objects: 96, done.
Counting objects: 100% (96/96), done.
Delta compression using up to 40 threads
Compressing objects: 100% (48/48), done.
Writing objects: 100% (94/94), 852.67 KiB | 42.63 MiB/s, done.
Total 94 (delta 41), reused 77 (delta 40)
remote: Resolving deltas: 100% (41/41), done.
To https://github.com/user/repo.git
 + 4777199...1f210c5 main -> main (forced update)
  1. 退出克隆的存储库目录并将其删除。
$ cd ..
$ rm -rf repo.git
  1. 您的更新现在应该反映您的提交历史!
于 2021-04-28T21:29:17.500 回答
1

这是我如何解决问题的确切步骤。

(1) 我的 ~/.gitconfig 文件中的 user.name 字段不需要与我在 Github 上的匹配。但是,~/.gitconfig 中的 user.email 字段需要与 Github 上的 email 字段完全逐个字母匹配。

(2) Github 上的相关邮箱是在“设置”下(右上角的图标看起来像齿轮)然后,而不是在“您的个人资料”中重置邮箱(这方面的说明让我很困惑),我需要实际单击设置中名为“电子邮件”的部分,然后添加我在 user.email 中的新电子邮件地址。我按照 Github 上的说明验证了这个电子邮件地址。我不需要将此电子邮件地址设置为“主要”,以将我的计算机与我的 Github 帐户完全同步。

文件路径和名称是 Mac OS X 的标准。感谢@stvnrlly,我使​​用了您回答的一般要点。

于 2014-10-15T15:27:22.560 回答
1

据我所知,您需要3 个配置,才能将提交链接到您的帐户:

  • 用户邮箱
  • 用户名
  • 用户名

user.email:这里是您的电子邮件,用于创建您的帐户或当前链接到您的帐户。不是 xyz@github.com,而是xyz@gmail.com

user.name| user.username:您需要两者,并且两者都应该具有相同的值。它可以在您帐户的网址、个人资料中找到。

如何设置这些值:

git config --global user.email "xyz@gmail.com"
git config --global user.name xyz
git config --global user.username xyz

检查这些值是否已设置:

git config --global --list
于 2020-09-05T07:08:41.010 回答
1

如果您从 gmail 收到您的电子邮件地址,并且在“。” 如果有像我这样的标志,你可能也遇到过这样的麻烦。比如你原来的e-mail地址是test.code@gmail.com,并且你testcode@gmail.com注册github时注册为,你很可能会遇到这个错误。

作为解决方案;您需要将两个电子邮件地址链接到您的 github 帐户。

于 2019-07-27T12:35:00.580 回答
-2

您必须首先获取远程仓库的参考。

git remote add origin https://github.com/yourGithubAccount/yourRepo.git

然后做git push -u origin master

于 2019-02-03T22:02:24.697 回答