我不想克隆完整的存储库,也不打算提交补丁。我确实想在未来轻松地获得新的修订。
我尝试使用git clone,但这创建了整个存储库的副本(巨大的文件大小),跟踪更改使磁盘空间更大(100mb的文件现在占用超过2gb)。
git clone
这可能吗?
使用git clone并将--depth选项设置为1来创建一个浅克隆,其历史被截断到最近一次提交。
--depth
1
例如:
git clone --depth 1 https://github.com/user/repo.git
要初始化和更新任何嵌套子模块,还要传递--recurse-submodules并简单地克隆它们,还要传递--shallow-submodules。
--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 clone --depth=1 <URL>
--remote
$ git archive --format=tar --remote=<repository URL> HEAD | tar xf -
或者,如果有问题的远程存储库可以使用一些web界面(如gitweb或GitHub)来浏览,那么它有可能具有“快照”功能,并且您可以从web界面下载最新版本(没有版本控制信息)。
这些天,大多数情况下不建议使用浅克隆。
虽然,对于你提到的用例(下载最新版本,再也不要碰它),git clone --depth=1工作,在更一般的情况下,它会产生问题。例如,如果你想让你的克隆与上游保持一致,git fetch在浅克隆上要昂贵得多。
git clone --depth=1
git fetch
如果你想要下载更少的数据,部分克隆更适合一般情况:
git clone --filter=tree:0 <url>
这仍然会下载提交历史,但不会下载以前提交的文件树和文件内容。上游提交的取回仍然很便宜。