GitHub 修改 Commit 用户名和邮箱

三味码屋 2023年08月26日 653次浏览

配置 Git 用户名和邮箱

向 GitHub 代码仓库提交 commit 时,如果仓库使用的 Git 用户名和用户邮箱与 GitHub 的用户名和邮箱不匹配,那么 commit 将不会被加入到 GitHub 的 Contribution 里面,此时,我们需要设置和 GitHub 匹配的 Git 用户名和邮箱。
如何设置呢?可以对 Git 进行全局配置,也可以对当前 Git 仓库进行配置。

全局配置

git config --global user.name "GitHub 的用户名"

git config --global user.email "GitHub 的邮箱号码,例如:xxxxxx@gmail.com"

对当前 Git 仓库进行配置

进入到仓库目录,执行如下命令:

git config user.name "GitHub 的用户名"

git config user.email "GitHub 的邮箱号码,例如:xxxxxx@gmail.com"

修改已提交的 Commit 的用户名和邮箱

有时候,我们已经向仓库提交了一些 Commit,后来才发现这些 Commit 的用户名和密码搞错了,想修改这些已提交的 Commit 的用户名和邮箱,要怎么做呢?
首先,clone 远程仓库:

git clone --bare https://github.com/[GitHub 用户名]/[GitHub仓库名].git

然后,进入 clone 下来的仓库:

cd [GitHub仓库名].git

接着执行替换旧用户名和邮箱的命令:

#!/bin/sh

git filter-branch --env-filter '

OLD_EMAIL="需要被替换的邮箱"
NEW_NAME="GitHub 用户名"
NEW_EMAIL="GitHub 邮箱"

if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ]
then
    export GIT_COMMITTER_NAME="$NEW_NAME"
    export GIT_COMMITTER_EMAIL="$NEW_EMAIL"
fi
if [ "$GIT_AUTHOR_EMAIL" = "$OLD_EMAIL" ]
then
    export GIT_AUTHOR_NAME="$NEW_NAME"
    export GIT_AUTHOR_EMAIL="$NEW_EMAIL"
fi
' --tag-name-filter cat -- --branches --tags

最后,把修改推送到 GitHub 仓库:

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

完事之后就可以把 clone 下来的仓库删掉了。

参考

[github]修改 commit 的用户名和邮箱
git更新历史commit中的author信息