我看过几次,但是实际上如何解决却没有任何可靠的答案。
我去了,然后在分支上运行它来重写作者历史记录:
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~
在交互模式下进行变基,但是它根据祖先的历史记录(或类似的东西)对提交进行排序,几乎无法压榨重复的提交,而重复提交则占上千个。
是否有一种可以负责任的方式纠正此问题的方法?