2011-08-20 162 views
22

我不太熟悉版本控制的术语或实践和过程。制作远程git存储库的本地副本

这是我想做的事:

  1. 我想从互联网上的Git库下载文件夹中。克隆正确的方式来做到这一点?不会克隆保留不必要的元数据文件?有没有办法做一个“干净”的下载?

  2. 我想建立一个包含这个文件夹上,我现在可以使用版本控制的本地存储库。也就是说,当我做一个提交时,我的本地存储库被更新。

  3. 最后,我想这个地方回购是在本地网络上访问,这样我可以从任何其他计算机在局域网上下载它。

回答

19
  1. 克隆是正确的方式,但会下载远程Git仓库的所有目录。
    git clone of Git Reference
  2. clone命令将创建一个工作树已经签出回购和git的代表完整的回购
  3. 你需要有为了其他克隆/推/拉至少一个共享路径你的回购。
    git local protocol

如果你不熟悉这些操作,我建议你遵循git immersion提出的简单exercices。

1

是'git clone'是要走的路。这将为您提供所有数据并允许您进行提交。只要新的回购在局域网中可见,其他计算机也应该能够从中克隆。

3

你不能从一个混帐回购协议下载单个文件或文件夹,因为Git跟踪一个项目的全部状态,作为一个整体,而不是单个文件。有可能从远程repositoy只克隆一组有限的修订(称为浅克隆),但这些克隆仅限于有限的一组操作,例如,您不能从浅克隆中克隆,或从这样的回购。

如果git repo的大小困扰你,你可以使用git gc来让git重新组织对象数据库,这有时可以获得大小改进。

如果你想有一个本地缓存,您可以使用git clone --mirror $REMOTE_URL以创建一个克隆,这

您可以从此本地缓存回购库中克隆新的工作回购站,并直接将其推入上游回购站(您需要在工作副本中将git remote add upstream $REMOTE_URL添加到上游回购站的链接,之后您可以git push upstream),也可以推入本地缓存回购,并从那里推到上游回购。

2

虽然git clone是步骤1 & 2的权利,但您可能需要阅读一些git书籍,例如Progit/Community书籍等,以获得步骤3的最佳方法以及git哲学的适当风味。

Git,作为分布式 VCS尽量避免“单一中央存储库”,您的“本地回购网站可在本地网络上访问”可能会提示。你可以在网络上有一个裸回购,它允许许多推/拉,但这不同于在网络上使用本地回购,与工作目录,并且只有你使用它作为如果它是本地驱动器。

+0

好的。我想从两台不同的机器上处理我的项目,并希望它们保持同步。所以我应该把资源库放在其中一台机器上(比如primary),在另一台机器上克隆它(比如secondary),添加一些从主服务器到辅助服务器的“远程”链接,然后进行推送并保持同步。那是这种方式吗? – AnkurVj

+0

如果仅仅是你,并且你从两台机器上不相连地工作(也就是说你永远不会同时使用aka登录),那么在网络驱动器上安装repo是合理的,并且这样它总是同步的,无论你从哪里登录。显然你会招致一些网络延迟,并且你必须确保备份和安全性,但是它避免了无休止的克隆/推/拉操作。 –

相关问题