簡體   English   中英

我將如何使用git克隆回以前的遠程版本?

[英]How would i clone back to a previous remote version with git?

我正在關注一個學習Rails的教程(並且我仍然是git的新手)。 我知道如何還原回本地版本

>>git log -p
>>git revert <sha1> //the sha1 to return to

可以說我不再具有對該文件的本地訪問權,但是可以遠程訪問該存儲庫,我該如何克隆到特定版本中?

$ git clone $URL
$ cd $PROJECT_NAME
$ git reset --hard $SHA1

最簡單的方法是克隆整個存儲庫,然后簽出感興趣的特定修訂版。 對於大型存儲庫,這可能會很昂貴。 有時您可以通過執行“淺”克隆來降低成本,但是您將需要知道要深入的程度以及是否有一個“接近”所需散列的引用。

您可能會或可能不會被允許通過git archive --remote來檢索一個特定的提交,例如tarball或zip存檔。 約束由服務器決定,如git upload-archive文檔中所述

安全

為了保護已從歷史記錄中刪除但尚未被修剪的對象的私密性,git-upload-archive避免為無法從存儲庫的引用訪問的提交和樹提供歸檔。 但是,由於計算對象的可到達性在計算上非常昂貴,因此git-upload-archive實現了一套更嚴格但更易於檢查的規則:

  1. 客戶端可以請求引用直接指向的提交或樹。 例如, git archive --remote=origin v1.0

  2. 客戶端可以使用ref:path語法在提交或樹中請求子樹。 例如, git archive --remote=origin v1.0:Documentation

  3. 即使最終結果可以達到,客戶端也不能使用其他sha1表達式。 例如,即使結果可以從abcd1234也不允許像master^這樣的相對提交,也不像abcd1234這樣的文字sha1是允許的。

請注意,規則3禁止許多不涉及隱私的情況。 這些規則在將來的git版本中可能會發生變化,並且git archive --remote訪問的服務器可能會也可能不會遵循這些確切規則。

如果配置選項uploadArchive.allowUnreachable為true, uploadArchive.allowUnreachable忽略這些規則,並且客戶端可以使用任意sha1表達式。 如果您不關心無法訪問的對象的私密性,或者您的對象數據庫已經公開可用於通過非smart-http訪問,則此功能很有用。

出於同樣的安全原因,在現代版本的Git中,您通常無法通過哈希ID進行克隆或獲取。 像GitHub這樣的站點允許通過哈希ID直接訪問提交,這是通過“圍繞” Git而不是通過 Git進行的。 但是

上面的報價中沒有提到的是uploadpack.allowReachableSHA1InWant如果啟用 ,它將恢復舊的Git 1.5樣式功能,以通過哈希(在服務器上昂貴地計算)來獲取。 這是Git 2.5中的新功能。 請參閱從遠程Git存儲庫檢索特定的提交 同樣,必須在服務器上啟用它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM