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

时间:2016-10-27 14:45:52

标签: git

我正在学习学习rails的教程(而且我还是git的新手)。我知道如何恢复到本地版本

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

假设我不再拥有本地访问权限但我可以远程访问存储库,我将如何克隆到特定版本?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:-1)

最简单的方法是克隆整个存储库,然后查看感兴趣的特定修订版。对于大型存储库,这可能很昂贵。您有时可以通过执行“浅层”克隆来降低成本,但是您需要知道要走多远,以及是否存在“接近”所需散列的引用。

您可能会或可能不会通过git archive --remote检索一个特定提交,作为tarball或zip存档。约束由服务器决定,如described in the git upload-archive documentation

  

安全

     

为了保护已从历史记录中删除但尚未修剪的对象的隐私,git-upload-archive可避免为从存储库的refs无法访问的提交和树提供存档。但是,因为计算对象可达性在计算上是昂贵的,所以git-upload-archive实现了更严格但更容易检查的规则集:

     
      
  1. 客户端可以请求ref直接指向的提交或树。例如,git archive --remote=origin v1.0

  2.   
  3. 客户端可以使用ref:path语法在提交或树中请求子树。例如,git archive --remote=origin v1.0:Documentation

  4.   
  5. 即使最终结果可以访问,客户端也不能使用其他sha1表达式。例如,即使可以从refs中获得结果,也不允许像master^这样的相对提交或像abcd1234这样的文字sha1。

  6.         

    请注意,规则3禁止许多没有任何隐私影响的案例。这些规则在将来的git版本中可能会有所变化,git archive --remote访问的服务器可能会也可能不会遵循这些准确的规则。

         

    如果配置选项uploadArchive.allowUnreachable为true,则忽略这些规则,客户端可以使用任意sha1表达式。如果您不关心无法访问的对象的隐私,或者您的对象数据库已经公开可用于通过非smart-http访问,则此功能非常有用。

出于同样的安全原因,在现代版本的Git中,通常无法通过哈希ID克隆或获取。像GitHub那样允许通过哈希ID直接访问提交的网站是通过“围绕”Git而不是通过 Git来实现的。的

上面引用中没有提到uploadpack.allowReachableSHA1InWant如果启用,则恢复旧的Git 1.5样式通过哈希获取的能力(计算上昂贵,在服务器上)。这是Git 2.5中的新功能。见Retrieve specific commit from a remote Git repository。同样,必须在服务器上启用它。