gpt4 book ai didi

git - 在不克隆的情况下在特定提交时获取 git repo

转载 作者:行者123 更新时间:2023-12-05 04:09:18 26 4
gpt4 key购买 nike

我正在尝试在特定的提交散列中获取一个 git 存储库而无需克隆!每个例子都想克隆整个仓库。这是有道理的,但我想到的 repo 是巨大的,我需要它留下一个小的足迹,因为它与 docker 图像一起使用。

提交散列在 URL 中 - wgetcurl 可以/应该递归获取但我有一种感觉 github 阻止了我所得到的是 robots.txt

repo 和提交:

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

更新

使用克隆的答案建议并未回答问题。我可以克隆/checkout 没问题。尝试在没有本地整个 repo 的情况下做到这一点

最佳答案

由于错误消息中显示的原因,您将需要一个 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> 增加深度直到足够为止。


1事实上,这个逻辑似乎是短语“证明规则的异常(exception)”的真正来源:它来自 pull 丁短语 Exceptio probat regulam in casibus non exceptis 。参见 https://pocketbookuk.com/tag/cicero/this answer on english.stackexchange.com有关更多信息。

关于git - 在不克隆的情况下在特定提交时获取 git repo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46208207/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com