我在我的存储库中意外地通过“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显示旧的提交(混合了“未知”的提交者)和新的提交(重写的提交),在某个点周围分开半。想想一堆提交,然后复制(和编辑),并堆叠在原始提交之上。我想做的就是尽可能删除原来的。
答案 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>