git:在浅克隆上克隆特定提交 ID

fra*_*ans 5 git commit git-clone shallow-clone

我发现了很多关于克隆存储库并立即检查给定提交 ID 的问题/答案。简单的方法:

git clone <URL> working-copy
cd working-copy; git checkout <COMMIT-ID>
Run Code Online (Sandbox Code Playgroud)

通过分支机构,您可以git clone -b <BRANCH> <URL>

使用分支,您还可以进行浅克隆,这使得克隆速度更快,但您无法再检出任意 ID。

所以我的问题是:有没有一种方法可以对给定的 URL/提交 ID 进行浅表克隆,而无需在远程创建分支?

不同类型的远程存储库有区别吗?(例如本地文件系统、BitBucket、GitHub、GitLab 等)

Lig*_*der 4

如果您无法控制服务器,则您将无法执行此操作。您可以在专用服务器上禁用一个安全设置来实现此功能,但不建议这样做。

由于浅层克隆不完整,因此许多功能在浅层存储库中不可用(或至少无法正常工作)。通常,此技术用于存储库生命周期非常短的部署处理。

话虽这么说,在大多数情况下,如果您想要浅克隆单个提交,那么标签可能就是您所需要的。git clone -b还将接受标签,并且因为它们是不可变的,所以它们将始终解析为相同的提交。

我在过去几年中构建的大多数 CI 系统都将分支用于临时环境,而仅将标签用于永久环境。这个系统对我来说效果很好,但只是几个可靠的选择之一。