我在我的分支上运行了这篇文章来改写作者的历史:
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 --tags
然后我发布了
git push --force --tags origin 'refs/heads/*'
觉得一切都很顺利。直到我打开SourceTree,看到有一堆提交要拉,所以我不假思索地拉了又推。它可能做的是在没有
--force
现在几乎每个提交都是重复的。
我试图在交互模式下使用
rebase -i HEAD~
但是它根据祖先历史(或类似的东西)来排序提交,这使得几乎不可能压缩重复的提交,主服务器上有数百个。
有没有办法以一种可回答的方式来纠正这一点?