当我单击 github 上某个包的“下载 zip”按钮,或通过https://github.com/{username}/{projectname}/archive/{sha}.zip下载特定提交时,文件的 sha1sum最终出现在我的计算机上与网页上显示的不符。
为什么会出现这种情况?sha1sum 不匹配是不安全的。如何在不使用“git”命令或不必在 github 上创建帐户的情况下下载具有可验证哈希和的提交的完整源代码(因为我只想下载一次库以供本地使用,而不是编辑它)。
谢谢!
当我单击 github 上某个包的“下载 zip”按钮,或通过https://github.com/{username}/{projectname}/archive/{sha}.zip下载特定提交时,文件的 sha1sum最终出现在我的计算机上与网页上显示的不符。
为什么会出现这种情况?sha1sum 不匹配是不安全的。如何在不使用“git”命令或不必在 github 上创建帐户的情况下下载具有可验证哈希和的提交的完整源代码(因为我只想下载一次库以供本地使用,而不是编辑它)。
谢谢!
使用以下 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 匹配的提交,则该命令将失败。