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



我发现了许多有关克隆存储库并立即检查给定提交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等)

如果您无法控制服务器,则没有办法做到这一点。有一个安全设置,您可以在专用服务器上禁用此工作,但这是不是推荐的。

由于浅层克隆不完整,因此在浅仓库中不可用(或至少无法正常工作)。通常,此技术用于部署处理,其中存储库的寿命很短。

所说的话,在大多数情况下,您想降低单个提交,标签可能是您想要的标签。git clone -b也将接受标签,并且由于它们是不变的,因此它们将始终解决同一提交。

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