在浅克隆中克隆特定的提交ID:git

5

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

git clone <URL> working-copy
cd working-copy; git checkout <COMMIT-ID>

使用分支可以通过命令 git clone -b <BRANCH> <URL> 轻松克隆代码库。
使用 分支 还可以进行浅层克隆,这样可以加快克隆速度,但是不能再检出任意的ID。
我的问题是:是否有方法可以在不创建远程分支的情况下浅层地克隆给定 URL/commit ID 的代码库?
对于不同类型的远程代码库是否有区别?(例如本地文件系统、BitBucket、GitHub、GitLab 等等)

这个问题属于“因情况而异”的范畴,你是在运行自己的服务器还是使用类似GitHub或BitBucket这样的服务? - LightBender
不行。您需要在远程存储库中的该提交上创建一个分支或标签。请参见https://dev59.com/rF8e5IYBdhLWcg3wEG_A。 - ElpieKay
@LightBender:在我的情况下,我对本地存储库和通过http/ssh访问的BitBucket感兴趣。 - frans
1个回答

4
如果您没有服务器的控制权,则无法这样做。在私有服务器上可以禁用一个安全设置以使其工作,但不建议这样做。
由于浅克隆是不完整的,许多功能是不可用的(或者至少无法正常工作)。通常,此技术用于处理部署,在这种情况下仓库存活期非常短暂。
话虽如此,在大多数情况下,如果您想要浅克隆单个提交,标签可能是您要寻找的东西。git clone -b也将接受一个标签,并且因为它们是不可变的,所以它们始终会解析到相同的提交。
我在过去几年中构建的大多数CI系统都使用分支进行临时环境,并且仅对永久环境使用标签。这个系统对我来说效果很好,但只是几个稳固选项之一。

1
我刚刚发现了https://dev59.com/xF0Z5IYBdhLWcg3wlRMV#43136160 - 这种方法是否需要更改您提到的安全设置?您具体指的是哪个设置? - frans
@frans 那种方法就是我提到的修改设置。:) 请参考git文档获取详细解释。 - LightBender

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接