最近想把本地的代码库上传到github上,结果上传完毕后才发现作者莫名其妙变成了其他人
追究原因,发现我用的 smartgit 工具,当初在配置 Comment 信息时,填写了正确的 username,但却随便填写了一个 useremail为“888888@qq.com”,于是上传到github后,就给我匹配成了github上使用“888888@qq.com”邮箱注册的用户“nuo503”了,当时就郁闷了...................
后来查看github的官方文档,发现有可以修改已提交更改的作者信息的方案,这里是官网的链接:Changing author info
我将其实践了过后,发现可行,于是整理出以下几个步骤:
1.找到当初安装 git 软件时的目录,找到 git-bash.exe 并使用管理员方式运行。
2.从远程 github 上 clone 一个临时的库到本地,运行以下命令即可:
git clone --bare https://github.com/你的github账户/你的代码库名.git
3.运行上述命令后,会在 git-bash.exe 相对目录下新建 “你的代码库名.git
” 的临时库根目录,运行以下命令进入临时库根目录:
cd 你的代码库名.git
4.修改以下命令中的对应参数,并运行该命令:
git filter-branch --env-filter '
an="$GIT_AUTHOR_NAME"
am="$GIT_AUTHOR_EMAIL"
cn="$GIT_COMMITTER_NAME"
cm="$GIT_COMMITTER_EMAIL"
if [ "$GIT_COMMITTER_EMAIL" = "[Your Old Email]" ]
then
cn="[Your New Author Name]"
cm="[Your New Email]"
fi
if [ "$GIT_AUTHOR_EMAIL" = "[Your Old Email]" ]
then
an="[Your New Author Name]"
am="[Your New Email]"
fi
export GIT_AUTHOR_NAME="$an"
export GIT_AUTHOR_EMAIL="$am"
export GIT_COMMITTER_NAME="$cn"
export GIT_COMMITTER_EMAIL="$cm"
'
注意:不要遗漏掉 单引号
5.运行以下命令,强制将本地修改 push 到远程 github 上(建议事先备份代码库):
git push --force --tags origin 'refs/heads/*'
6.运行以下命令,清除本地临时库即可:
cd ..
rm -rf repo.git
最后,给大家看看我成功修改作者信息后的截图: