
由于你要真正要用的代码处于一个子目录中,我的方案是你先把这个子目录提取成一个单独的仓库(可以使用
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 的仓库中,所以最后才会无效的。
本文以 skywalking-rocketbot-ui 子模块合并到 skywalking 为例,手把手教你如何把 Git 子模块更新到主项目中去。
首先,把fork的skywalking项目克隆到本地:
进入skywalking目录,设置用户名和邮箱:
指定将与复刻同步的远程上游仓库:
查看一下远程上游仓库是否生效:
没有问题,初始化本地子模块:
从子模块的远端更新修改:
从子模块的远端拉取上游的修改:
检查当前文件状态:
发现skywalking-ui已经有更新了,可以直接将其提交到远端,也可以修改其他文件一起提交。
这里先修改一下 CHANGES.md 文件,然后一起提交:
至此,大功告成,可以向社区提交PR了。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)