git - 只获取文件,而不是历史记录

时间:2013-04-15 08:53:42

标签: performance git repository

当我正在运行git pullgit fetch时,我显然会检索历史记录和文件。对于大型项目,这需要很长时间。我想知道如何加快这个过程,对于一些我只对源代码而不是历史感兴趣的项目。有没有办法告诉git我只想获取文件的当前快照而不是整个历史记录?

3 个答案:

答案 0 :(得分:9)

您可能希望查看--depth中的git clone选项 - 称为“浅层克隆”。特别是,你可能想要:

git clone --depth=1 <url>

如果项目在GitHub上,您可以随时使用下载链接。请注意,使用浅层克隆有一些问题:

  

创建一个浅层克隆,其历史记录被截断为指定的修订版本数。浅存储库有许多限制(您不能克隆或获取它,也不能从中推送或插入它),但如果您只对历史悠久的大型项目的近期历史感兴趣并且希望将修补程序作为补丁发送。

但这听起来像你可以忍受的东西。

此外,正如正电子指出的那样,您也可以使用git archive执行此操作。

答案 1 :(得分:3)

您可以使用浅层克隆

git clone --depth=1 git://url/of/repo

但是,您将无法提交/推送在浅层克隆中进行的更改。

答案 2 :(得分:3)

如果有像gitweb或cgit这样的webview,你可以很好地拍摄快照。但我不认为单独获取代码可能。因为fetch正在处理你的git对象而不是代码。

git archive --format=tar --remote=gitolite@server:repo.git HEAD | bzip2 > repo-snapshot.tar.bz2