代码之家  ›  专栏  ›  技术社区  ›  unrelativity

Git-重复提交问题

git
  •  9
  • unrelativity  · 技术社区  · 15 年前

    我不小心在我的存储库中创建了“未知”提交,并决定尝试从 here :

    git filter-branch --commit-filter '
            if [ "$GIT_COMMITTER_NAME" = "unknown" ];
            then
                    GIT_COMMITTER_NAME="..";
                    GIT_AUTHOR_NAME="..";
                    GIT_COMMITTER_EMAIL="...";
                    GIT_AUTHOR_EMAIL="...";
                    git commit-tree "$@";
            else
                    git commit-tree "$@";
            fi' HEAD
    

    起初,我认为一切都很好,直到我在Gitk中注意到,在运行之前的每个提交都是复制的,而不是像我最初想象的那样简单地进行编辑。

    可以清理一下吗?

    编辑: 好的,Gitk显示了旧的提交(那些混合了“未知”提交者的提交)和新的提交(重写的提交),在大约一半的某个点上拆分。考虑一堆提交,然后复制(和编辑),并叠加在原始提交之上。如果可能的话,我想做的就是去掉原来的。

    2 回复  |  直到 11 年前
        1
  •  7
  •   unrelativity    15 年前

    答案是文件 .git/refs/original 以及我找到的命令不应该以什么结尾 HEAD 但是相反 --tag-name-filter cat -- --all .

    为维和韦雷汉斯特干杯 #git 帮助频道。

        2
  •  1
  •   John Feminella    15 年前

    如果你知道最后一个好承诺,就用这个来拯救你的培根吧:

    git reset <last_good_commit>   # Warp back to a good state.
    git push -f master             # Push the changes up (you need -f to force it to
                                   #  obliterate old commits).
    

    如果您想更仔细地处理(例如,如果在 <last_good_commit> )、使用 git rebase -i 挑选最好的留在后面的。