在特定提交时获取git repo而不克隆

时间:2017-09-13 23:20:28

标签: git github

我正在尝试使用特定提交哈希获取git repo而不进行克隆!每个例子都想克隆整个回购。这是有道理的,但我想到的回购是巨大的,我需要这样做留下一个小的足迹,因为它是一个码头图像。

提交哈希在URL中 - wgetcurl可以/应该递归获取但我感觉github正在阻止,因为我得到的只是robots.txt

回购并提交:

  

https://github.com/phalcon/cphalcon/tree/1d6d21c98026b5de79ba5e75a3930ce7d1ebcd2e

我最好的尝试错误:

git fetch https://github.com/phalcon/cphalcon/ 1d6d21c98026b5de79ba5e75a3930ce7d1ebcd2e
error: Server does not allow request for unadvertised object 1d6d21c98026b5de79ba5e75a3930ce7d1ebcd2e

更新

使用克隆的答案的建议不回答这个问题。我可以克隆/结账没问题。试图在没有本地整个回购的情况下做到这一点

1 个答案:

答案 0 :(得分:2)

您将需要一个Git存储库,原因如错误消息所示:

error: Server does not allow request for unadvertised object ...

“未公开的对象”是指没有直接附加名称的对象。 (如果对象有一个名字,你可以要求命名的东西,服务器就会给你这个对象。这假设像“我不允许蓝色猫”这样的抱怨意味着“我允许其他一些颜色的猫“,这也不一定是真的,但它是一种合理的假设。 1 )这意味着你必须通过某种间接方式获得对象,即使用git fetch

根据定义,您需要的存储库是原始存储库的克隆或至少部分克隆。您可以使用克隆,这是一个不完整的克隆。确切地说,深度是必要的是你无法提前计算的东西:拥有完整克隆的人可以弄明白,一旦你有足够深的克隆,你就可以找到确切的数字。但如果你的克隆太浅,你所知道的就是你的克隆太浅了。

另请参阅Git fetch a specific commit by hashgit shallow clone (clone --depth) misses remote branches。请注意,您可能需要--single-branch,也可能不需要git fetch --depth <bigger-number>。克隆一些深度并查看它是否足够,如果没有,请使用ResourceBundle entries = Utf8ClassLoader.getBundle("localization/language", "fa-IR"); // fa-IR is a UTF-8 and RTL language Enumeration<String> keys = entries.getKeys(); for (String key = keys.nextElement(); keys.hasMoreElements(); key = keys.nextElement()) { ResourceEntity entity = new ResourceEntity(); entity.setId(new ResourceEntity.PKC(key, locale)); entity.setValue(entries.getObject(key)); resourceDAO.persistOrUpdate(entity); } 提高深度,直到足够。

1 事实上,这个逻辑似乎是短语“证明规则的例外”的真正起源:它来自拉丁语短语 Exceptio probat regulam in casibus non exceptis 。有关详情,请参阅https://pocketbookuk.com/tag/cicero/this answer on english.stackexchange.com