我使用脚本here修改了回购邮件中所有旧提交的作者姓名:
#!/bin/sh
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@email.to.match" ]
then
cn="Your New Committer Name"
cm="Your New Committer Email"
fi
if [ "$GIT_AUTHOR_EMAIL" = "your@email.to.match" ]
then
an="Your New Author Name"
am="Your New Author Email"
fi
export GIT_AUTHOR_NAME="$an"
export GIT_AUTHOR_EMAIL="$am"
export GIT_COMMITTER_NAME="$cn"
export GIT_COMMITTER_EMAIL="$cm"
'
该脚本有效,但它创建了每个提交的副本 - 所以现在每次提交都有一个提交错误的作者,一个提交正确的作者。有没有办法用错误的作者删除所有提交?
谢谢!
答案 0 :(得分:0)
这是git filter-branch
的正常行为。由于无法修改历史记录,因此会根据旧分支创建新分支(即备用历史记录)。
可能,您想要丢弃旧分支。在与协作者合作时,您应该了解problems with rewriting history,如git手册中所述。