momocraft
2017-09-02 14:20:22 +08:00
我在本地简单实验了一下:
1. 建立 repo A,commit 某个文件
2. 把 repo A 中那个文件对应的 blob 换成另外内容
3. git clone A B 能正常结束,B 中的这个文件会是改过的 blob 的内容。
4. 此时在 A 和 B 中运行 git fsck 都会说 `error: sha1 mismatch for .git/objects/8f/150a442a97cd4ad6320768029b7a1e13a42ca2 (expected 8f150a442a97cd4ad6320768029b7a1e13a42ca2)
`。但 fsck 不会自动运行。
因此即使一个 commit 和内部所有 blob 的 sha1 都和原 repo 一样,仍然有可能内容是被篡改过的。这样的篡改可以用 git fsck 检查出来。不知道 github 对这种事情有没有预防。