如何使用git来获得一个项目的最新版本?

我不想克隆完整的存储库,也不打算提交补丁。我确实想在未来轻松地获得新的修订。

我尝试使用git clone,但这创建了整个存储库的副本(巨大的文件大小),跟踪更改使磁盘空间更大(100mb的文件现在占用超过2gb)。

这可能吗?

185422 次浏览

使用git clone并将--depth选项设置为1来创建一个浅克隆,其历史被截断到最近一次提交。

例如:

git clone --depth 1 https://github.com/user/repo.git

要初始化和更新任何嵌套子模块,还要传递--recurse-submodules并简单地克隆它们,还要传递--shallow-submodules

例如:

git clone --depth 1 --recurse-submodules --shallow-submodules https://github.com/user/repo.git

执行浅克隆(git clone --depth=1 <URL>)的替代解决方案是,如果远程端支持的话,使用< >强git存档< / >强--remote选项:

$ git archive --format=tar --remote=<repository URL> HEAD | tar xf -

或者,如果有问题的远程存储库可以使用一些web界面(如gitweb或GitHub)来浏览,那么它有可能具有“快照”功能,并且您可以从web界面下载最新版本(没有版本控制信息)。

这些天,大多数情况下不建议使用浅克隆

虽然,对于你提到的用例(下载最新版本,再也不要碰它),git clone --depth=1工作,在更一般的情况下,它会产生问题。例如,如果你想让你的克隆与上游保持一致,git fetch在浅克隆上要昂贵得多。

如果你想要下载更少的数据,部分克隆更适合一般情况:

git clone --filter=tree:0 <url>

这仍然会下载提交历史,但不会下载以前提交的文件树和文件内容。上游提交的取回仍然很便宜。