删除由filter-branch引起的重复git commit

时间:2018-09-03 05:33:46

标签: git

我看过几次,但是实际上如何解决却没有任何可靠的答案。

我去了,然后在分支上运行它来重写作者历史记录:

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~在交互模式下进行变基,但是它根据祖先的历史记录(或类似的东西)对提交进行排序,几乎无法压榨重复的提交,而重复提交则占上千个。

是否有一种可以负责任的方式纠正此问题的方法?

0 个答案:

没有答案