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