拆分存储库时如何删除不相关的历史记录?

时间:2019-04-12 15:51:32

标签: git

我有一个存储库,有时在其中添加了目录。最初,看起来该目录将与该存储库一起使用,但最终我决定将其解压缩到自己的存储库中,而与第一个目录无关。

我这样做了according to GitHub instructions。提取成功,只剩下我需要的目录。

查看git历史记录时,我发现与该特定目录无关的部分仍然存在:

enter image description here

该目录最初是通过“添加的警报模块” 提交添加的(黄色区域底部的第一个):

  • 左侧的红线反映了对该目录中文件的提交
  • 灰色文件-其他文件(在上面的成功提取过程中已删除)。

是否可以摆脱“灰色”提交(结束于分支original/refs/heads/master)?

这不是关键需求-我可以将其永久拖动(并且在此回购中未更新),但是出于美学的原因,我很乐意摆脱它。

1 个答案:

答案 0 :(得分:1)

您可以像使用git filter-branch一样来获取结果,反之亦然。只需将subdirectory-filter(这意味着“仅保留指定的目录”)替换为index-filter(这意味着“在每次提交之前使用索引执行某些操作”)。

要在“做某事”中指定“某事”,index-filter将bash命令作为参数,该命令应修改git索引。在您的情况下,该命令应仅删除不需要的目录。例如:

--index-filter 'git rm -r -q --cached --ignore-unmatch the/unwanted/directory'

在提取目录时,请保留所有其他内容。

或者,看看filter-branch-docs。它有很多选择。