在特定提交处获取 git repo,无需克隆

Chr*_*rno 3 git github git-fetch git-remote

我正在尝试在不克隆的情况下获取特定提交哈希的 git 存储库!每个示例都想克隆整个存储库。这是有道理的,但我想要的存储库很大,我需要它留下一个小的足迹,因为它与 Docker 镜像一起使用。

提交哈希在 URL 中 - 或者wget可以curl/应该递归获取,但我有一种感觉 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
Run Code Online (Sandbox Code Playgroud)

更新

使用克隆的答案建议并不能回答问题。我可以克隆/结帐没有问题。尝试在本地没有整个存储库的情况下执行此操作

tor*_*rek 5

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

\n\n
\n
error: Server does not allow request for unadvertised object ...\n
Run Code Online (Sandbox Code Playgroud)\n
\n\n

“未公布的对象”是指没有直接附加名称的对象。(如果该对象有一个名称,您可以询问指定的事物,服务器会给您该对象。这假设像“我不允许这里有蓝猫”这样的投诉意味着“我确实允许一些其他颜色” of cats”,这也不一定是真的,但它是一种合理的假设。1 ) 这意味着您必须通过某种间接方式获取该对象,即使用git fetch

\n\n

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

\n\n

另请参阅Git 通过哈希获取特定提交git 浅层克隆 (clone --深度) 错过远程分支。请注意,您可能想要也可能不想要--single-branch。克隆一定深度,看看是否足够,如果不够,则提高深度,git fetch --depth <bigger-number>直到足够。

\n\n
\n\n

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

\n