假设我有这样的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创建一个新的分支,并将其合并到第一个分支上。或者其他什么。
答案 0 :(得分:3)
只需执行git rebase -i A
并删除B和F的行。
但正如你所说的(或者意味着),这将重写已发布的历史记录,因此所有开发人员都需要根据操作分支来修改所有分支,如git rebase
手册中“如何恢复”部分所述来自上游rebase“。