![我可以让 git 仅从远程存储库提取工作副本吗?](https://linux22.com/image/556130/%E6%88%91%E5%8F%AF%E4%BB%A5%E8%AE%A9%20git%20%E4%BB%85%E4%BB%8E%E8%BF%9C%E7%A8%8B%E5%AD%98%E5%82%A8%E5%BA%93%E6%8F%90%E5%8F%96%E5%B7%A5%E4%BD%9C%E5%89%AF%E6%9C%AC%E5%90%97%EF%BC%9F.png)
作为系统管理员,我希望能够编写一个自动化安装流程以安装到生产服务器:
- 有权访问远程 git 存储库(例如
git.mycompany.com
) release_20110721_01
可以从存储库中获取一个分支/标签的副本(例如)- 不会创建整个存储库的本地副本
换句话说,有一个包含所有修订的中央存储库,但仅将特定标签安装到生产服务器。
有办法吗?至少使用 CVS 可以获得具有给定标签的模块的工作副本,而无需提取整个存储库的副本。
答案1
这是集中式 VCS(如 CVS)和 DVCS(分布式)之间的主要区别:你总是克隆全部仓库的内容,即使你可以执行浅克隆, 作为奥利普罗 提及。
- 在 CVCS 中,您可以放入所有内容,但只获取其中的一部分。
- 在 DVCS 中,您将 repo 视为一组全局且连贯的文件,您始终将其作为全部文件进行操作。
只对一个分支进行浅克隆是可能的,但很复杂:参见“使用 Git 和 Mercurial 进行部分克隆“。
但我建议不要使用 Git 作为发布管理/部署工具:“如何在 git 中浅克隆单个分支?“。
我宁愿选择git archive
压缩您需要的正确分支/版本,然后将其复制到适当的服务器。
答案2
-b
当然,让未配置的生产服务器可以访问您的中央存储库,使用和选项从服务器执行 git clone--depth
来指定您想要的分支以及您希望服务器可用的修订深度。