我尝试使用我在相关帖子中看到的git filter-branch
命令来重命名一批旧提交。结果是,现在我的repo有许多与不同作者相同的提交。它给我留下了以下情况:
A' -> B' -> C'
\
A -> B -> C -> D -> E -> F
A'
与A
相同,但提交作者除外,B'
和C'
相同。我想删除A'
,B'
和C'
的所有引用和历史记录。注意:这些提交都不在分支上或有标记。
如何删除重复的提交历史记录?这是我之后的结果:
A -> B -> C -> D -> E -> F
我的理由是简单地清理历史。我是唯一接触过此代码的人,我知道尝试任何类型的非平凡回购都不是一件好事。此外,似乎有许多类似的问题,但我似乎无法拼凑出一个有效的解决方案。
谢谢!
答案 0 :(得分:1)
编辑:嗯,这几乎奏效了。我从中看到的唯一问题是它覆盖了最近提交的提交时间(D +)。
我似乎找到了解决方案。我整天都在四处跳舞,但终于想出了正确的提交参考。按照上面的例子,我用最新的master分支克隆了一个新的repo。从那里我发现了C
提交'哈希,它表示最后知道的好状态。然后我以交互模式运行rebase:
git rebase -i <the C commits' hash>
在出现的编辑器中,只显示了我想要删除的重复提交(直到当前历史记录)。所以我删除了所有旧的重复条目,直到D
提交。保存rebase命令完成后没有错误。
此时我的本地存储库似乎已按顺序排列,所以我将其强制进入服务器:
git push --force origin master
最终结果似乎正是我所寻找的:
A -> B -> C -> D -> E -> F
不确定这是不是最好的方式,但是这不是你想做的事情。