我使用以下命令从git存储库的备份中删除了价值1.5 GB的二进制blob: https://rtyley.github.io/bfg-repo-cleaner/
现在,当我比较两个存储库的历史/图表时,现在100%完全相同。 bfg会重写历史记录,但有没有办法验证历史记录是否完整,即使它看起来有所不同?
为什么它看起来不一样?更改提交的SHA值会生成新图吗?
是否可以为每个生成所有分支的提交的每个仓库运行一个日志命令,然后才能进行差异化?
答案 0 :(得分:0)
提交的SHA是其唯一标识符,它基于提交的确切内容。提交的一部分是实际内容,以及提交消息,作者/提交者名称和日期以及上一次提交的ID等元数据。
因此,当您在历史的最开始更改单个提交时,例如通过删除文件,然后重新创建之前存储该文件的树,导致树的新哈希,导致带有新哈希的新提交对象,导致所有后续提交也被重新创建(更改正在波及)
因此,单个更改将重新创建以下历史记录中的所有提交。虽然这很不幸,因为它打破了所有具有旧历史的存储库(这就是为什么你应该避免重新定义团队项目中已发布的更改的原因),但它也会强制执行存储库的完整性,因为提交是不可变的。