Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从主存储库的稀疏签出高效地更新git子模块_Git_Git Submodules_Sparse Checkout - Fatal编程技术网

从主存储库的稀疏签出高效地更新git子模块

从主存储库的稀疏签出高效地更新git子模块,git,git-submodules,sparse-checkout,Git,Git Submodules,Sparse Checkout,我正在编写一些自动化程序,以便在远程计算机上将git子模块更新为最新版本。通常,这是通过在.gitmodules中指定分支=并运行以下命令来实现的: git submodule update --remote 但对我来说这并不合适 我处理的主存储库大小超过6 Gig,子模块超过10 Gig。别问我为什么,事情就是这样。当运行git子模块update--remote--init时,git将执行远程分支的完全签出,这将花费永远的时间。我想将主存储库中的子模块指针更新为最新的,而不签出整个子模块。我

我正在编写一些自动化程序,以便在远程计算机上将git子模块更新为最新版本。通常,这是通过在
.gitmodules
中指定
分支=
并运行以下命令来实现的:

git submodule update --remote
但对我来说这并不合适

我处理的主存储库大小超过6 Gig,子模块超过10 Gig。别问我为什么,事情就是这样。当运行git子模块update--remote--init时,git将执行远程分支的完全签出,这将花费永远的时间。我想将主存储库中的子模块指针更新为最新的,而不签出整个子模块。我还希望尽可能避免签出整个主存储库。因此,我设计了一个使用稀疏签出和手动克隆子模块的解决方案:

1) 仅使用
.gitmodules对主存储库执行稀疏签出

git clone-b--不签出--depth=1

git config core.sparsecheckout true

echo.gitmodules>.git\info\sparse checkout

git签出

2) 使用手动克隆子模块

git子模块init

git克隆--不签出--深度=1-b

此时,我希望git状态报告子模块commit中的差异,因为它现在不同于子模块的签入版本。然后我可以简单地添加子模块路径、提交和创建拉请求。但是,使用这种稀疏签出方法,主存储库不知道我在子模块中所做的更改。如果我对主存储库执行普通签出而不是稀疏签出,则此方法可以工作,但随后我还需要签出整个主存储库。与git子模块相关的稀疏签出是否存在一些限制

谢谢