rip*_*234 92 git git-submodules
浏览SubModule教程,我从boto项目中创建了一个子模块.然后,我发现我实际上只需要这个项目的一个子集 - 特别是boto文件夹.
我想更改我的子模块以指向此文件夹.当我查看.gitmodules时,我明白了
[submodule "backup/src/boto"]
path = backup/src/boto
url = https://github.com/boto/boto.git
Run Code Online (Sandbox Code Playgroud)
我应该使用什么URL而不是https://github.com/boto/boto.git?更改URL后,我应该在本地删除boto文件夹并重新拉出吗?
Mar*_*air 60
我担心子模块的URL总是只指向存储库 - 您不能指定只需要存储库的子文件夹,就像git一般不支持"窄克隆"一样.
如果您不能将整个存储库作为子模块使用,则可以始终创建一个从boto克隆的新存储库,然后将cron作业设置为:
git fetch 将该存储库放入目录中git filter-branch其中的子目录是在顶层更新某个分支. Jus*_*ond 25
这里的所有答案都相当过时。您可以使用此处git sparse-checkout较新的命令文档和本文中的更多示例来获取存储库的各个部分。如果您只需要较大 git 项目中的一两个目录,那么这非常有效。
总而言之:
git sparse-checkout init --cone
git sparse-checkout set <dir1> <dir2> ...
git checkout main
Run Code Online (Sandbox Code Playgroud)
Art*_*ct2 23
您不能仅克隆存储库的一部分.这是因为混帐把仓库作为一个整体对象:当你得到它,你就会得到它所有.
因此,这里的解决方案是获取另一个目录中的子模块,然后使用符号链接来实现您的目标.
Ada*_*ruk 14
您要做的是在子模块中创建一个分支并向上移动文件夹并删除您不需要的内容.然后,您可以管理该分支.如果您想要推升您的更改,您应该能够先退回合并.Git会知道你移动了文件并成功完成了合并.
希望这可以帮助.