妙用Git rebase和filter-branch
git rebase 的操作就如同灭霸的响指一般,能够改变仓库的历史,常用来合并提交信息,让工作树尽可能可以变得整洁。
更改历史提交时间
git rebase --committer-date-is-author-date
# 或者利用 filter-branch
git filter-branch --env-filter 'GIT_COMMITTER_DATE=$GIT_AUTHOR_DATE; export GIT_COMMITTER_DATE'
更改历史提交作者
修改提交作者(交互式)
思路: 变基到要修改的commit的前一个commit,修改后提交,继续变基.
git rebase -i commitID
git commit --amend --author="Author Name <email@address.com>"
git rebase --continue
脚本批量修改
查找条件为OLD_EMAIL,替换相应的提交作者,邮箱,可以更改相应参数的查询条件
git filter-branch -f --env-filter '
OLD_EMAIL="emample@email.com"
CORRECT_NAME="Your New Name"
CORRECT_EMAIL="emample@email.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 --tags