Git提交没有与我的GitHub帐户链接

时间:2014-09-23 20:56:07

标签: github command-line eclipse-luna

我在尝试将提交链接到我的GitHub帐户时遇到问题。正如我的图片所示,GitHub正在报告提交的内容。值 user.name user.email 是否正确,还有其他要检查的想法吗?

提前致谢

Commit example

7 个答案:

答案 0 :(得分:17)

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

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

其次,如果您以前能够成功提交某些内容,请打开该repo并运行git log以查找一切正常工作的提交。检查Author字段与不起作用的字段,看看是否存在差异。

第三,如果存在差异,请切换回有争议的回购并运行git config --global user.email correct-email@example.com

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

有关详细信息,请参阅this help article

答案 1 :(得分:3)

我有一个类似的问题,@ stvnrlly的回复很有用。 就我而言,在运行时:

git config --global user.email 

CL将吐出“ email@email.com”,这是错误的,因为它应显示不带“”的电子邮件地址。 因此,就我而言,设置未正确完成。希望对您有所帮助。

答案 2 :(得分:1)

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

(1)我的〜/ .gitconfig文件中的user.name字段不需要与我在Github上的匹配。但是,〜/ .gitconfig中的user.email字段需要与Github上的电子邮件字段完全匹配。

(2)Github上的相关电子邮件字段位于&#34;设置&#34; (右上方的图标看起来像齿轮)然后,而不是重置电子邮件&#34;您的个人资料&#34; (这方面的说明让我感到困惑),我需要实际点击“设置”部分,即“#34;电子邮件&#34;并添加我在user.email中的新电子邮件地址。我按照Github上的说明验证了这个电子邮件地址。我不需要制作这个电子邮件地址&#34; primary&#34;将我的计算机与我的Github帐户完全同步。

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

答案 3 :(得分:1)

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

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

然后执行git push -u origin master

答案 4 :(得分:1)

我今天也遇到了这个问题,但就我而言,提交已经很老了,我在使用错误的细节提交一周后发现了这个问题。 因此,当您发现 较旧的 提交未链接到您的 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. 您的更新现在应该反映在您的提交历史中!

答案 5 :(得分:0)

如果您是从gmail收到的电子邮件地址,则在“。”中。如果有像我这样的迹象,您可能遇到了此类麻烦。例如,如果您的原始电子邮件地址是“ test.code@gmail.com”,并且在向github注册时已注册为“ testcode@gmail.com”,那么您很可能会遇到此错误。

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

答案 6 :(得分:0)

据我所知,您需要进行 3 配置,以使提交链接到您的帐户:

  • user.email
  • user.name
  • user.username

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
相关问题