从旧提交中删除单个文件

时间:2016-08-26 02:31:50

标签: git git-rewrite-history

我刚刚意识到旧提交提交了一个不应该在源代码管理中的敏感文件。

然而,从那时起,有许多分支和合并。如果我回到原来的提交,然后重置并重新执行提交,那么将会有很多问题需要重新定位并重复所有分支并合并。

自原始提交以来,该文件尚未完全编辑; git log badfile.ext只显示一次提交。

我是否可以使用其他任何技术使存储库的历史记录看起来像这个文件从未存在过,而不会更改所有后续提交?

这是一个私人仓库,因此我知道所有克隆版本的位置;如果问题可以在一个仓库中修复,然后所有其他仓库必须删除并重新克隆以获取更改,那就没关系。

1 个答案:

答案 0 :(得分:1)

removing sensible data上查看 Github的文档。正如这里提到的,如果不重写历史记录就不能这样做(更改一个提交意味着更改其哈希值,这意味着指向它的所有提交也必须更改,依此类推)。

另外,请记住,清除克隆历史也没有意义(如果可能的话)。

所以,基本上你必须要求所有参与repo工作的人推送他们所有的更改,然后在你的中央仓库上重写历史记录,消除本地克隆并从更新的存储库中克隆。