我可以使git仅从远程存储库提取工作副本吗?

作为系统pipe理员,我希望能够编写一个自动安装过程到生产服务器:

  • 有权访问远程git仓库(比如在git.mycompany.com
  • 可以从存储库中获取一个分支/标签的副本(例如release_20110721_01
  • 将不会创build整个存储库的本地副本

换句话说,有一个包含所有修订版本的中央存储库,但是只能在生产服务器上安装特定标签。

有没有办法做到这一点? 至less在CVS中,可以获得具有给定标签的模块的工作副本,而不必拉取整个存储库的副本。

这是集中式VCS(如CVS)和DVCS(分布式)之间的主要区别:即使您可以执行浅层克隆 ,您也可以克隆所有回购内容,就像Olipro 提到的那样 。

  • 在一个CVCS中,你可以放置所有的东西,并且只能得到它的一个子集。
  • 在DVCS中,您将回购视为一组全局且连贯的文件,您始终将其视为一个全部操作。

做一个分支的浅层克隆是可能的,但是很复杂:请参阅“ 使用Git和Mercurial进行部分克隆 ”。

但是我build议不要使用Git作为发布pipe理/部署工具:“ 如何在git中浅析一个分支? ”。

我宁愿使用git archive来压缩你需要的右分支/版本,然后将其复制到适当的服务器。

当然,让你的中央仓库可以被未经configuration的生产服务器访问,使用-b--depth选项从服务器执行一个git克隆,指定你想要的分支以及服务器可用的修订深度它。