2

当我单击 github 上某个包的“下载 zip”按钮,或通过https://github.com/{username}/{projectname}/archive/{sha}.zip下载特定提交时,文件的 sha1sum最终出现在我的计算机上与网页上显示的不符。

为什么会出现这种情况?sha1sum 不匹配是不安全的。如何在不使用“git”命令或不必在 github 上创建帐户的情况下下载具有可验证哈希和的提交的完整源代码(因为我只想下载一次库以供本地使用,而不是编辑它)。

谢谢!

4

1 回答 1

4

使用以下 url 下载 repo 源内容...

https://github.com/{username}/{projectname}/archive/{sha}.zip

...将使用以下 url 检索提交中包含的代码源

https://github.com/{username}/{projectname}/commits/{sha}

sha1sum在检索到的存档上运行不会产生目标提交的 sha。

Git 依靠 SHA-1 哈希来唯一标识其内部对象的方式在Pro Git书的这一章中有详细说明。您会注意到任何提交的 sha 都将取决于其父提交的 sha(并且间接依赖于其所有祖先)。这意味着,为了生成这样的 sha,您将需要导致此提交的所有更改的整个历史记录。

为了安全地验证源代码没有被更改并与 GitHub 上显示的提交 sha 匹配,除了克隆完整的存储库并运行以下命令之外别无他法。此命令将使用提交的内容更新您的工作目录。

git checkout {sha}

如果 git 找不到与此 sha 匹配的提交,则该命令将失败。

于 2013-08-30T18:54:55.777 回答