当我在github上点击包的“下载zip”按钮,或者通过https://github.com/ {username} / {projectname} / archive / {sha} .zip下载特定提交时,文件的sha1sum最终在我的电脑上不同意网页上显示的那个。
为什么会这样? sha1sum不匹配是不安全的。如何使用可验证的hashsum下载提交的完整源代码而不使用“git”命令或必须在github上创建一个帐户(因为我只想下载一个供本地使用的库,而不是编辑它)。
谢谢!
答案 0 :(得分:4)
使用以下网址下载repo源内容...
https://github.com/{username}/{projectname}/archive/{sha}.zip
...将使用以下url
检索提交中包含的代码源
https://github.com/{username}/{projectname}/commits/{sha}
在检索到的存档上运行sha1sum
不会产生目标提交的sha。
this chapter 一书的 Pro Git 详细介绍了Git依赖SHA-1哈希来唯一标识其内部对象的方式。您会注意到任何提交的sha将取决于其父提交的sha(以及其所有祖先的间接)。这意味着,为了生成这样的sha,您需要导致此提交的所有更改的完整历史记录。
为了安全地验证源代码没有被更改并且与GitHub上显示的提交sha相匹配,除了克隆完整存储库并运行以下命令之外别无他法。此命令将使用提交的内容更新您的工作目录。
git checkout {sha}
如果git找不到与此sha匹配的提交,则该命令将失败。