首页 > 解决方案 > git clone/checkout 一个没有历史记录的 SHA

问题描述

部分是作为一种练习,部分是因为它几乎可以工作,我觉得有必要完成它......

我可以git clone $repo --branch $ref --single-branch --depth 1,而且它非常适合标签和头像。

我可以git pull --depth 1 $repo $sha而且效果很好,只要 $sha 是一个完整的值。但是:如果缩写,即使是 1 个字符,也会失败。

有没有办法做到这一点?我正在尝试自动化 git 同步并且非常大的存储库是一个问题。使用深度 1 有很大帮助,但我不知道如何使用缩写的 SHA。

标签: git

解决方案


我刚刚尝试使用该git -c core.abbrev=40选项,如“让所有命令的 git 输出完整(未缩写)哈希? ”中所示

git -c core.abbrev=40 --branch 05f7b9c710 --single-branch --depth 1 https://github.com/auser/arepo test

但这仍然失败:

Cloning into '`test`'...
warning: Could not find remote branch 05f7b9c710 to clone.
fatal: Remote branch 05f7b9c710 not found in upstream origin

如“git clone --single-branch不适用于 sha / commit ids?

这是故意的,允许对可以从 repos 获取的内容进行一些控制,特别是在单个对象 db 服务于多个 repos 的设置中。

顺便说一下,不是uploadpack.allowAnySHA1InWant在GitHub 端设置的。 这意味着即使我使用完整的SHA1 参考,它仍然会失败。

在您的情况下,如果您可以控制 Git 远程存储库托管服务器,则可以将设置设置为允许此类克隆。


推荐阅读