我在尝试将我的提交链接到我的 GitHub 帐户时遇到问题。提交正在 GitHub 上以我的图片显示的方式报告。值user.name和user.email是正确的,还有其他要检查的想法吗?
提前致谢
我在尝试将我的提交链接到我的 GitHub 帐户时遇到问题。提交正在 GitHub 上以我的图片显示的方式报告。值user.name和user.email是正确的,还有其他要检查的想法吗?
提前致谢
即使您的设置可能看起来正确,但此错误意味着该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电子邮件设置,并确保您使用的电子邮件地址已添加到您的帐户中。
有关详细信息,请参阅此帮助文章。
我遇到了类似的问题,@stvnrlly 的回复很有用。就我而言,运行时:
git config --global user.email
CL 会吐出“email@email.com”,这是错误的,因为它应该显示没有“”的电子邮件地址。所以在我的情况下,设置没有正确完成。希望能帮助到你。
我今天也遇到了这个问题,但就我而言,提交已经很老了,我在使用错误的细节提交一周后发现了这个问题。所以这个答案适用于当你发现你的旧提交没有链接到你的 GitHub 时。首先更正您git config
已经提到的设置。
现在,要修改您的提交历史记录,请按照下列步骤操作:
$ cd working_dir
$ git clone --bare https://github.com/user/repo.git
$ cd repo.git
由于各种原因,您的提交可能未链接到您的原始 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 步。
将修改后的历史推送到您的原始存储库。
$ 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)
$ cd ..
$ rm -rf repo.git
这是我如何解决问题的确切步骤。
(1) 我的 ~/.gitconfig 文件中的 user.name 字段不需要与我在 Github 上的匹配。但是,~/.gitconfig 中的 user.email 字段需要与 Github 上的 email 字段完全逐个字母匹配。
(2) Github 上的相关邮箱是在“设置”下(右上角的图标看起来像齿轮)然后,而不是在“您的个人资料”中重置邮箱(这方面的说明让我很困惑),我需要实际单击设置中名为“电子邮件”的部分,然后添加我在 user.email 中的新电子邮件地址。我按照 Github 上的说明验证了这个电子邮件地址。我不需要将此电子邮件地址设置为“主要”,以将我的计算机与我的 Github 帐户完全同步。
文件路径和名称是 Mac OS X 的标准。感谢@stvnrlly,我使用了您回答的一般要点。
据我所知,您需要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
如果您从 gmail 收到您的电子邮件地址,并且在“。” 如果有像我这样的标志,你可能也遇到过这样的麻烦。比如你原来的e-mail地址是test.code@gmail.com
,并且你testcode@gmail.com
注册github时注册为,你很可能会遇到这个错误。
作为解决方案;您需要将两个电子邮件地址链接到您的 github 帐户。
您必须首先获取远程仓库的参考。
git remote add origin https://github.com/yourGithubAccount/yourRepo.git
然后做git push -u origin master
。