配置 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 下来的仓库删掉了。