git怎么更新submodules

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了git怎么更新submodules相关的知识,希望对你有一定的参考价值。

git 的 submodule 方式不会向仓库添加实际的的内容的,只会通过 .gitmodules 文件保留相应的子模块的哈希值。
由于你要真正要用的代码处于一个子目录中,我的方案是你先把这个子目录提取成一个单独的仓库(可以使用
git-subtree.sh
这个脚本),然后再添加这个仓库为 submodule(或者直接使用 git-subtree.sh 把实际的代码集成到你的项目,这样别人克隆就不需要更新 submodule 了)。这样做的缺点就是每当上游有更新,就需要对 submodule 的仓库做相应更新。
另外:git-subtree.sh 已经合并入 git 了,可能并不在 PATH 中,不能直接执行,不过应该在 git 的安装中的。
另一个思路:
建立 bundles 目录,添加原仓库为 submodule 到此,然后对需要的子目录做相对路径软链接,git 能够正确处理软链接。这可能是比较好的一个办法了,不需要额外维护同上游的同步。
-----------
你在子模块目录中进行的
已经是 git-subree.sh 的 split 操作了,这个时候该仓库已经和 orgin 完全不同了,等于重新建立了以该 subdirectory 为根的一个仓库,这个仓库中的对象只在你的本地,并不包含在 origin 的仓库中,所以最后才会无效的。
参考技术A git submodule update --remote --merge

详见 https://git-scm.com/book/zh/v2/Git-%E5%B7%A5%E5%85%B7-%E5%AD%90%E6%A8%A1%E5%9D%97本回答被提问者采纳

git submodule

git clone --recurse-submodules [url]

添加submodule

git submodule add [url] [path]

更新submodule

git submodule update --init --recursive

以上是关于git怎么更新submodules的主要内容,如果未能解决你的问题,请参考以下文章

git怎么更新submodules

mirror的git仓库怎么合并远程更新与本地提交

git怎么查看远程分支的更新时间

解决git每次提交、更新都需要输入账户密码

idea集成git怎么拉某分支代码

linux系统下怎么使用git