代码之家  ›  专栏  ›  技术社区  ›  Michael Brown

正在删除筛选器分支导致的重复git提交

git
  •  0
  • Michael Brown  · 技术社区  · 6 年前

    我在我的分支上运行了这篇文章来改写作者的历史:

    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 回复  |  直到 6 年前