Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/22.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-submodule-sparse签出时,是否可能没有额外的子目录?_Git_Svn_Git Submodules_Svn Externals_Sparse Checkout - Fatal编程技术网

在使用Git-submodule-sparse签出时,是否可能没有额外的子目录?

在使用Git-submodule-sparse签出时,是否可能没有额外的子目录?,git,svn,git-submodules,svn-externals,sparse-checkout,Git,Svn,Git Submodules,Svn Externals,Sparse Checkout,我想模仿svn:externals这样的行为:我有一个主项目,在另一个存储库中有一些“通用”代码。有了SVN,我会: svn co <url>/src common 现在使用git+子模块+稀疏签出,这要复杂得多,当我添加子模块时,我有一个额外的子目录层 git submodule add <url> common 使用稀疏签出,我可以确保只签出src文件夹,但与svn:externals解决方案相比,我还有一个层(src): repo/common/src/*.cp

我想模仿svn:externals这样的行为:我有一个主项目,在另一个存储库中有一些“通用”代码。有了SVN,我会:

svn co <url>/src common
现在使用git+子模块+稀疏签出,这要复杂得多,当我添加子模块时,我有一个额外的子目录层

git submodule add <url> common
使用稀疏签出,我可以确保只签出src文件夹,但与svn:externals解决方案相比,我还有一个层(src):

repo/common/src/*.cpp

是否有更好的通用代码解决方案?还是一种清理的方法?我知道一切都会好起来的;它不是那么干净…

您无法避免子模块中的额外文件夹,但您可以添加一个符号链接(即使在Windows上)以查找所需的内容

添加子模块及其repo名称:

git submodule add -b master /url/of/repo
添加符号链接:

ln -s repo/src common
如果您希望回购遵循其
master
分支,请不要忘记添加“
-b master
”。
这是可能的,因为git 1.8.2:请参阅“”



即使是文件夹也无法避免额外的文件夹级别“
common

Wow感谢您对“-b master”选项的提示!我将进一步检查…@ChrisMaes是的,这是一个与子模块关联的本地配置。任何
git子模块更新--remote
都会在获取子模块上游分支后更新子模块的内容。考虑到最近对子模块和稀疏签出的更改,这个答案仍然正确吗?@eggyal是的。我在中介绍了git2.25
gitsparsecheckout
new命令。但是在OP的上下文中,对于您要使用的任何子模块,您仍然有一个中间文件夹级别。好的,谢谢。在我的例子中,我有一个子模块,它只涉及整个回购协议的一小部分,而不是仅仅想要避免一个中间文件夹,但我想工作集现在必须包括完整的子模块。
git submodule add -b master /url/of/repo
ln -s repo/src common