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

Performance git-只获取文件,不获取历史记录,performance,git,repository,Performance,Git,Repository,当我运行git pull或git fetch时,我显然会检索历史记录和文件。对于大型项目,这需要很多时间。我想知道如何加快这个过程,因为对于一些项目,我只对源代码感兴趣,而对历史不感兴趣。有没有办法告诉git我只想获取文件的当前快照,而不是整个历史记录?您可以使用浅层克隆: 但是,您将无法提交/推送在浅层克隆中所做的更改。您可能需要查看git clone中的--depth选项,该选项称为“浅层克隆”。特别是,您可能需要: git clone --depth=1 <url> git克

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

您可以使用浅层克隆:


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

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

git clone --depth=1 <url>
git克隆--depth=1 如果项目位于GitHub上,则始终可以从那里使用下载链接。请注意,使用浅层克隆有一些问题:

创建一个浅层克隆,其历史记录被截断为指定的修订数。浅层存储库有许多限制(您不能克隆或从中获取,也不能从中推送或插入),但如果您只对具有长期历史的大型项目的最近历史感兴趣,并且希望以补丁的形式发送修复,则浅层存储库就足够了

但这听起来像是你可以忍受的


另外,正电子指出,你也可以用git archive来实现这一点。

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

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

就我所知,这是不可能的。实际上,这并不是版本控制的全部内容。Git 1.9/2.0(2014年第1季度)通过浅层克隆将更加高效:@jszameister Git根本不支持这个概念?我想你误解了。我完全忘记了git archive的远程选项!这听起来不错,但是github似乎不支持它+1无论如何。
git archive --format=tar --remote=gitolite@server:repo.git HEAD | bzip2 > repo-snapshot.tar.bz2