Scene
- 发现 Github 的 commit 没有显示在主页的记录图表中
- 排查后得出是 commit 的用户不对
Solution
git config
先调整本地的 git config
1
2
3
4
5
6
7// 设置全局
git config --global user.name "Author Name"
git config --global user.email "Author Email"
// 或者设置本地项目库配置
git config user.name "Author Name"
git config user.email "Author Email"以后每次提交前都检查下用户
git rebase
- 修改已经 commit 了的历史用户信息记录
git rebase -i HEAD~n
n 回溯到指定的位置- 在想要修改的位置添加
exec git commit --amend --author="New Author<New Email Address>" -C HEAD
git pull
git push
- 结果如下,并不能完全移除之前的提交历史,只是替换了
git filter-branch
- 同样的修改历史用户信息记录
shell 脚本循环所有 commit 记录修改
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16!/bin/sh
git filter-branch --env-filter '
OLD_EMAIL="your-old-email@example.com"
CORRECT_NAME="Your Correct Name"
CORRECT_EMAIL="your-correct-email@example.com"
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 --tagsgit pull
git push
- 和前面的 rebase 同样效果