
1 Yvette 2017 年 9 月 2 日 via iPhone 看 commit 记录 |
3 Yvette 2017 年 9 月 2 日 via iPhone @nikoo 你这反问得我有点愣了,既然都能看到官方的 commit 记录那还要看 fork 的干啥…不过话说回来,每个 commit 的哈希值跟前一个 commit 以及提交时间都有关系,所以不可能被篡改的,确保一致。 |
4 FrankFang128 2017 年 9 月 2 日 check sum? |
5 dong3580 2017 年 9 月 2 日 via Android |
6 nikoo OP @Yvette 谢谢!比如这个 SSR fork 项目: https://github.com/ssrbackup/shadowsocksr 可以看到他的 commits 记录 https://github.com/ssrbackup/shadowsocksr/commits/manyuser 都是作者本人提交的,这个提交者是无法篡改的把? 是不是可以说明这个 fork 是与官方一致的? |
9 momocraft 2017 年 9 月 2 日 我在本地简单实验了一下: 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 对这种事情有没有预防。 |
10 nikoo OP |
12 momocraft 2017 年 9 月 2 日 #9 的补充: 最后一段 "内部所有 blob 的 sha1" 是指那个 blob 路径中的 sha1,不是内容的。 |
13 ProjectAmber 2017 年 9 月 2 日 无法确保安全,因为 git 的一切都可以伪造。唯一能保证 commit 来自特定开发者的是其主动添加的签名。 https://github.com/blog/2144-gpg-signature-verification |
14 nbndco 2017 年 9 月 2 日 commit 是可以篡改的,在 GitHub 上所有没显示 verified 的都是可能被改过的。 |
15 Yvette 2017 年 9 月 2 日 学习了,以前没听说过有 Verified 的 commit |