ma1*_*w28 19 git clone github git-submodules sparse-checkout
许多供应商的Objective-C库(例如facebook-ios-sdk)指示您将其repo的文件/目录的某个子集复制到Xcode项目中.这样做的一个问题是你不知道你有什么版本的供应商代码.另一个原因是,如果您对供应商代码进行更改,则通过Git提交更改并不容易.
作为一个解决方案,我想将每个供应商库添加为我项目的repo的Git子模块,并带有一些额外的设置(例如,在.gitmodules文件中).这样,如果另一个人克隆我的项目git submodule update --init,他们的repo和子模块将具有与我相同的状态,因为他们将使用我设置的相同默认设置:
如何为Git子模块设置上述设置?
gwo*_*pq9 15
你可以像普通的稀疏结账一样对子模块进行稀疏检查.记住sparse-checkout每个模块的文件都进入.git/modules/<mymodule>/info/.但是,正如git 1.7稀疏结账功能中所讨论的那样,稀疏结账就是:结账.您无法移动文件或共享设置.
Von*_*onC 14
使用git1.8.4(2013年7月),除了子模块(git submodule update --depth 1)的git浅更新,您现在可以进行自定义更新:
除了"rebase,merge或checkout-detach"之外,"子模块更新"还允许使用自定义命令通过"
submodule.*.update"配置变量更新子模块的工作树.
请参阅commit 6cb5728c43f34a7348e128b44b80d00b9417cb19:
用户可以设置
submodule.$name.update为'!command'将导致'command'运行而不是checkout/merge/rebase.
这允许用户更精细地控制更新的完成方式.签约:Chris Packham
<judge.packham@gmail.com>
这意味着你可以版本' command'然后你可以用于任何子模块更新(通过submodule.$name.update设置).
如果你愿意,该脚本可以进行稀疏结账.
2016年8月更新(3年后)
使用Git 2.10(2016年第3季度),您将能够做到
git config -f .gitmodules submodule.<name>.shallow bool
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请参阅" 没有额外重量的Git子模块 ".