时间:2022-8-30 作者:悬浮的青春 分类: javascript
使用下面两个命令查看 git 在本地的全局邮箱和用户名。
git config user.name git config user.email
如果需要修改 git 在本地的全局邮箱和用户名,执行下面的命令。
git config --global user.name "输入你的用户名" git config --global user.email "输入你的邮箱"
现在我们已经设置好了本地 git 的 user.name 和 user.email 信息。
git clone 你要修改的仓库,进入该仓库目录,打开 git bash 界面,执行 git log 命令查看历史提交信息(重点关注 作者信息)。
打开一个文本编辑器,粘贴下面代码。 然后把 OLD_EMAIL,CORRECT_NAME,CORRECT_EMAIL 改成自己的新旧邮箱用户名。
git filter-branch -f --env-filter ' OLD_EMAIL="原来的邮箱" CORRECT_NAME="现在的名字" CORRECT_EMAIL="现在的邮箱" if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ] then export GIT_COMMITTER_NAME="$CORRECT_NAME" export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL" fi 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
回到 git bash 界面,复制粘贴上面修改过用户名邮箱的代码并按回车执行。 如果 commit 记录比较多的话执行的时间会比较长。
等待执行完成后,再查看 git log 可以看到已经修改成功。
特殊情况: 如果上面的批量修改命令执行失败的话,执行一下这段命令:
git filter-branch -f --index-filter 'git rm --cached --ignore-unmatch Rakefile' HEAD
再次复制粘贴批量修改的代码并按回车执行。
这时候虽然本地修改成功了,但是你还没有推送到远程。 所以再执行一下命令:
git push origin --force --all
去看一下 Git服务器上面 你就会发现之前的提交记录中,name 和 email 信息都更新了。
在项目根目录下创建 git-email.sh,写入下面这段代码:
!/bin/sh git filter-branch --env-filter ' OLD_EMAIL="原来的邮箱" CORRECT_NAME="现在的名字" CORRECT_EMAIL="现在的邮箱" if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ] then export GIT_COMMITTER_NAME="$CORRECT_NAME" export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL" fi 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
然后需要赋予执行权限:
chmod +x git-email.sh
执行一下这个 .sh 文件:
./git-email.sh
git log 检查一下。修改成功后,最后别忘了推送一下到仓库。
标签: 网页