几个星期后,我在GitHub上的提交列在作者muheim
下,而不是jmuheim
。我不知道这是怎么改变的,我想把它改回jmuheim
,但我不知道如何跟踪它。
我在macOS上,我的密码保存在钥匙串中。但我在那里找不到任何帐户muheim
,只有jmuheim
。
我的系统上有id_rsa.pub
,我很确定它在GitHub上映射到jmuheim
,但我不是SSH专家。
那么git push
使用muheim
用户的原因和方式是什么?如果我无法解决此问题,我会尝试删除muheim
用户(这是我几年前使用过的旧用户),但我希望有人可以帮我跟踪此问题。
答案 0 :(得分:1)
身份验证与用于提交的user.name
/ user.email
无关。
检查您的git config user.name
值:您可以将其更改回旧值。
而你can replace your user name/email for old commits (虽然这会重写回购的历史:如果你是唯一一个使用它的人,这并不重要)
请同时检查您的git remote -v
值:如果这是https网址,则无论如何都不会使用您的id_rsa.pub公共SSH密钥。
但是:如果您的提交被推到了正确的new-user/repo
,那么只需更改user.email
即可将新的提交附加到正确的用户。
您可以全局更改,或者,如果您管理多个用户,则仅针对该存储库进行更改:
cd /path/to/repo
git config user.email email-of-second-GitHub-account
点击“Why are my commits linked to the wrong user?”了解更多信息。
答案 1 :(得分:1)
您可以在计算机上设置全局用户名和用户电子邮件:
git config --global user.name jmuheim
git config --global user.email jmuheim@example.com
如果你想改变以前的提交,它会变得有点复杂。请注意,更改作者信息将无法将拉取请求或分支与之前的作者信息合并,因为git会告诉您这些信息完全不同。无论如何,GitHub在更改它之后提供tutorial for changing the email以搜索“错误”的名称,它应该如下所示:
为您的存储库创建一个全新的裸克隆:
git clone --bare https://github.com/user/repo.git
cd repo.git
运行此脚本,该脚本将在从muheim到jmuheim的所有分支的所有提交中更改您的提交者名称和作者姓名
#!/bin/sh
git filter-branch --env-filter '
OLD_NAME="muheim"
CORRECT_NAME="jmuheim"
if [ "$GIT_AUTHOR_NAME" = "$OLD_NAME" ]
then
export GIT_COMMITTER_NAME="$CORRECT_NAME"
fi
if [ "$GIT_COMMITTER_NAME" = "$OLD_NAME" ]
then
export GIT_AUTHOR_NAME="$CORRECT_NAME"
fi
' --tag-name-filter cat -- --branches --tags
推送到GitHub
git push --force --tags origin 'refs/heads/*'
我建议删除旧的克隆并继续使用新的git clone
您可以使用以下方法检查整个仓库中使用的用户名:
git log --all --full-history --pretty=format:"%ae - %ce - %an :%cn"