Git - 重复提交问题

时间:2009-12-30 23:37:43

标签: git

我在我的存储库中意外地通过“unknown”创建了提交,并决定尝试从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 个答案:

答案 0 :(得分:7)

答案是.git/refs/original中的文件,以及我找到的命令不应该在HEAD中结束,而是以--tag-name-filter cat -- --all结束。

欢迎来自#git频道的_Vi和Hamster寻求帮助。

答案 1 :(得分:1)

如果你知道最后一个好的提交,请用这个保存你的培根:

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来挑选应该留下的好的提交。< / p>