复制远程git存储库到本地

26

我对版本控制的术语、实践和流程不是很熟悉。

这是我想做的事情:

  1. 我想从互联网上的Git仓库中下载一个文件夹。克隆是正确的方法吗?克隆会保留不必要的元数据文件吗?有没有一种方法可以进行“干净”的下载?

  2. 我想建立一个包含此文件夹的本地仓库,以便我现在可以使用版本控制。也就是说,当我提交时,我的本地仓库会更新。

  3. 最后,我希望这个本地仓库可以在本地网络上访问,以便我也可以从局域网中的任何其他计算机下载它。

4个回答

21
  1. 克隆是正确的方法,但会下载远程 Git 仓库中的所有目录。
    请参见Git 参考手册的 git clone
  2. 克隆命令将创建一个带有工作树的仓库,并使用 .git 代表您的完整仓库。
  3. 为了让其他人可以克隆/拉取/推送您的仓库,您需要至少拥有一个共享路径。
    请参见Git 本地协议

如果您不熟悉这些操作,建议您按照Git 入门教程提供的简单练习进行学习。


3
你不能从一个git仓库下载单个文件或文件夹,因为git跟踪整个项目的完整状态而不是单个文件。有一种可能性只克隆一组有限的修订版本(称为浅克隆)从远程仓库,但这样的克隆受到一组有限的操作的限制,例如你不能从浅克隆中克隆或从这样的仓库推送东西。
如果git仓库的大小让你烦恼,你可以运行git gc来使git重新组织对象数据库,有时可以获得大小改进。
当你想要有一个本地缓存时,你可以使用git clone --mirror $REMOTE_URL创建一个克隆,它 你可以从这个本地缓存仓库克隆新的工作仓库,然后直接推送到上游仓库(你需要在你的工作副本中添加链接到上游仓库的git remote add upstream $REMOTE_URL,之后你可以git push upstream),或者你可以将其推送到本地缓存仓库中,并从那里推送到上游仓库。

3
虽然使用git clone是步骤1和2的正确方法,但你可能需要阅读一些git书籍(如Progit / Community book等)来了解最佳方法和git哲学。作为一种分布式版本控制系统,Git努力避免“单个中央存储库”,这与您的“本地存储库可在本地网络上访问”的想法不同。您可以在网络上拥有一个裸仓库,允许多个人从中推送/拉取,但这并不意味着您的本地存储库位于网络上,带有工作目录,并且只有您使用它就像它是本地驱动器一样。

好的。我想从两台不同的机器上处理我的项目,并且希望它们保持同步。因此,我应该将代码库放在其中一台机器上(比如主机),在另一台机器上(比如从机)克隆它,从主机到从机添加一些“远程”链接,然后进行推送和拉取以保持同步。这是正确的做法吗? - AnkurVj
如果你只是一个人,并且从两台机器上不联动地工作(即你从未同时使用两台设备,也没有登录),那么将repo放在网络驱动器上是合理的选择。这样可以保持同步,无论从哪个设备登录,都能访问到最新的repo。显然,你需要承担一些网络延迟,并确保备份和安全性,但它避免了反复克隆/推送/拉取的繁琐操作。 - Philip Oakley

2

是的,“git clone”是正确的方法。这将获取所有数据并允许您进行提交。只要新存储库在局域网上可见,其他计算机也应该能够从中克隆。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接