【问题标题】:git: clone specific commit id on a shallow clonegit:在浅克隆上克隆特定的提交 ID
【发布时间】:2017-09-09 10:25:17
【问题描述】:

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

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

有了分支你就可以git clone -b &lt;BRANCH&gt; &lt;URL&gt;

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

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

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

【问题讨论】:

  • 这完全属于“视情况而定”阵营,您是否运行自己的服务器?或者您使用的是 GitHub 或 BitBucket 之类的服务?
  • 没有。您需要在远程存储库中的该提交上创建分支或标签。见stackoverflow.com/questions/26135216/…。
  • @LightBender:就我而言,我对本地存储库和 BitBucket(通过 http/ssh)感兴趣

标签: git commit git-clone shallow-clone


【解决方案1】:

如果您无法控制服务器,您将无法执行此操作。您可以在私人服务器上禁用一项安全设置以使其正常工作,但不建议这样做。

由于浅层克隆不完整,很多功能在浅层 repo 中不可用(或者至少不能正常工作)。通常这种技术用于存储库非常短暂的部署处理。

话虽如此,在大多数情况下,您希望浅层克隆单个提交,标签可能就是您要寻找的。 git clone -b 也会接受一个标签,因为它们是不可变的,所以它们总是会解析到同一个提交。

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-06-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-25
  • 1970-01-01
相关资源
最近更新 更多