2013-08-30 41 views
2

當我在github上點擊一個包的「下載zip」按鈕,或者下載https://github.com/ {username}/{projectname}/archive/{sha} .zip的特定提交時,sha1sum的文件最終在我的電腦上不符合在網頁上顯示的。從github上下載的zip上的簽名不匹配

爲什麼會發生這種情況? sha1sum不匹配是不安全的。如何使用可驗證的hashsum下載提交的完整源代碼,而不使用「git」命令或必須在github上創建帳戶(因爲我只想下載庫供本地使用,而不是編輯它)。

謝謝!

+0

顯示的SHA-1是git commit的id。您應該克隆git存儲庫,並檢查最後一次提交匹配的SHA-1與您在網上看到的匹配。 – WhyNotHugo

回答

4

下載回購源內容如下網址...

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

...將檢索包含的代碼源有以下網址

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

承諾在檢索到的存檔上運行sha1sum將生成目標提交的sha 0 而不是

GIT中依賴於SHA-1的單向散列來唯一地標識在Pro Git書的this chapter其內部對象進行詳細說明。您會注意到任何提交的sha將取決於其父提交的sha(以及間接所有祖先的提交)。這意味着爲了產生這樣一個沙,你需要所有導致這個提交的變化的整個歷史。

爲了安全地驗證源代碼沒有被修改,並且與GitHub上顯示的提交符相匹配,除了克隆完整的存儲庫並運行以下命令,沒有別的辦法。該命令將使用提交的內容更新您的工作目錄。

git checkout {sha}

如果混帳不能找到一個承諾,這個SHA相匹配,該命令將失敗。

+1

因此,github網站沒有顯示個別提交的校驗和,特別是最新的提交,用於驗證? – user2733762

+0

事實上,你目前**不會**找到一種方法來驗證與sha1sum從GitHub下載的東西。但是,您可能需要通過發送郵件到**[email protected]**來嘗試向GitHub提供這種功能。 – nulltoken

+0

@ user2733762如果這個答案對你有幫助,也許你可以考慮接受它嗎? – nulltoken