有没有办法从git历史中删除“无意义”的提交?

时间:2016-05-09 12:39:36

标签: git version-control collaboration

假设我有这样的git历史记录:

A-B-C-D-E-F-G

B添加了60k文件。

F删除了那些相同的文件。

任何遍历git历史记录的操作,例如git log,如果必须越过F(或B),现在需要花费大量的时间。

有没有办法有效地从历史中删除B和F,因为它们只是相互取消了?

更重要的是:是否有一种简单的方法可以做到这一点,然后确保使用回购的其他开发人员也是最新的? (请记住,开发人员还在其计算机上设置了功能分支。)我怀疑所有解决方案最终都会导致A-C'-D'-E'-G' ...

我的直觉说我要做的最好的事情是从A创建一个分支,从C到E创建一个分支,然后从G创建一个新的分支,并将其合并到第一个分支上。或者其他什么。

1 个答案:

答案 0 :(得分:3)

只需执行git rebase -i A并删除B和F的行。
但正如你所说的(或者意味着),这将重写已发布的历史记录,因此所有开发人员都需要根据操作分支来修改所有分支,如git rebase手册中“如何恢复”部分所述来自上游rebase“。