详解git submodule使用以及注意事项

这篇文章主要介绍了详解git submodule使用以及注意事项,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。

一、背景

在平时的软件开发过程中常常会有这样的场景,自己负责的某个模块会依赖其他模块或者第三方的library。这时你自己的模块是一个独立的代码仓库,你想要实现这样一种功能,当你从你的模块的代码仓库里把代码拉到本地来的时候,能自动的将你依赖的模块或第三方库都拉到指定的目录当中去。

当然要实现这个功能的方法有很多,比如使用repo之类的工具,又比如如果你使用的是svn作为版本管理工具,那么你可以使用svn的external机制来引用第三方的project。

这里要说的是使用git作为版本管理工具的情况。

二、git submodule

其它的细枝末节就不再赘述了,咱直奔主题。

先来看具体用例:

目前有一个模块A,其代码仓库的地址为:projectA.git, 它需要引用另一个模块B, 其代码仓库的地址为:projectB.git。

假设模块A的本地目录为:projectA

希望引用模块B为模块A的子模块,其在模块A目录下的路径为: projectA/projectB

这里我们通过git 的submodule机制来实现。

比如在命令行里可以直接使用如下命令:

cd projectA
git submodule add projectB.git projectB

注: 这个submodule的 子目录指定时不能以 “/”结尾, 比如上面的命令,就不能写成 projectB/ 这个样子。

就这么简单的一句git命令就可以搞定了,当然这还没完,运行完这个命令之后,在projectA目录执行git status命令,可以看到如下的结果:

详解git submodule使用以及注意事项

这时需要使用git commit命令和git push命令,将添加模块B为模块A的子模块的结果push到模块A的代码仓库里面去。

三、git clone包含子模块的代码仓库

此时,就可以使用git clone命令来抓取模块A的代码仓库,但要同时抓取到子模块的仓库的话,还需要一些方法:

正常的使用git clone命令,然后再使用 git submodule init 和git submodule update来获取子模块

git clone projectA.git
cd projectA
git submodule init
git submodule update

其运行结果如下:

详解git submodule使用以及注意事项

在使用git clone命令时,加上–recurse-submodules或–recursive 这样的递归参数

git clone –recursive projectA.git

其运行结果如下:

详解git submodule使用以及注意事项

四、tortoisegit操作submodule

如果是使用tortoisegit的话,也可以使用图形化界面进行submodule的相关操作,如添加submodule就选择如下图所示的菜单:

详解git submodule使用以及注意事项

添加子模块的界面大概就是下面这个样子:

详解git submodule使用以及注意事项

这里和上面一样“path”一栏不能以”/”结尾。 填写之后,点击OK,就会在主模块的目录下添加对应的子模块。

在clone时也是一样的,它既可以只是clone,然后用上面菜单中,Submodule Update 选项来抓取子模块的内容,也可以在clone时选择递归参数,如下所示:

详解git submodule使用以及注意事项

五、忽略submodule中的修改或新增文件

我们引用第三方的project,大多数情况都是想以“只读”的方式引用,不关心第三方project抓取下来之后是不是被修改,或者是在其目录中添加了untracked的file, 因为我们只是拉取第三方的project,而不会(往往时不能或不允许)对第三方project进行提交。

以上面的模块A和模块B的例子来说,如果模块A和模块B中都有进行修改,其结果可能就是如下这个样子:

详解git submodule使用以及注意事项

这并不是我们想要的结果。一开始的时候我的想法是使用 .gitignore 来忽略submodule的修改,但是无法做到,后来经过一番搜索,终于找到了解决良药。在添加了submodule之后,project的目录下回生成一个.gitmodules文件,这个文件记录了子模块的路径和仓库地址等信息,如下图所示:

详解git submodule使用以及注意事项

我们要做的就是在[submodule “projectB”]中添加一个ignore子项,这个ignore子项可以有上个可选的值,untracked, dirty和all, 它们的意思分别是:

untracked :忽略 在子模块B(也就是projectB目录)新添加的,未受版本控制内容

dirty : 忽略对projectB目录下受版本控制的内容进行了修改

all : 同时忽略untracked和dirty

这里我们先选择dirty(至少先保证不提交对子模块B的任何修改),其他的可以根据具体需求来进行选择。

添加ignore子项之后的.gitmodules文件的内容如下所示:

详解git submodule使用以及注意事项

然后我们再使用git status查看,可以得到图下结果:

详解git submodule使用以及注意事项

可以看出,之前 “modified: projectB(modified content)” 已经不见了, 此时对修改后的.gitmodules文件进行commit和push, 之后在查看status或做commit时就可以忽略掉对子模块B修改的部分了。

到此这篇关于详解git submodule使用以及注意事项的文章就介绍到这了,更多相关git submodule使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

文章转自脚本之家,原文链接:https://www.jb51.net/article/193748.htm

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:SEO优化专员,转转请注明出处:https://www.chuangxiangniao.com/p/898860.html

(0)
上一篇 2025年1月4日 01:25:22
下一篇 2025年1月4日 01:25:51

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • jk为什么不能随便穿

    说到jk在当下可是超受大家的喜爱,尤其去逛漫展的时候,你更会见到各不相同的jk制服,但由于该服装的特定性便出现了jk为什么不能随便穿的说法,那么jk为什么不能随便穿?什么身材不适合jk?一起看看吧。 jk为什么不能随便穿 说到今年最为火爆的…

    2025年1月9日
    288.6K00
  • 桃蛋冬天怎么养护

    桃蛋在生活中是一种常见的多肉植物,因为它的美丽的姿态且放置时不占地方,所以在很多肉脱颖而出,成为大家养植花卉植物的第一选择,这不眼下就冬天了,小编就分享一波桃蛋冬天养植方法,快来get同款吧。 桃蛋冬天怎么养护 桃蛋冬天不用担心强光照射,应…

    2025年1月9日
    454.2K00
  • 2022年立春躲春是一人一屋吗

    2022年立春躲春是一人一屋吗是时下很多要躲春的人都有的疑问,毕竟在诸多地区躲春都和时运有莫大关联的吗所以每每立春这天,躲春的人就格外的晋升,下面小编就和大家一起看看立春躲春能不能一家人一起。 2022年立春躲春是一人一屋吗 立春躲春是一人…

    2025年1月8日
    629.6K00
  • 貂皮重新染色会不好吗

    随着天气越加的寒冷各种压箱底的衣服都开始被人们拿出来了,而貂皮大衣因其保暖程度极佳,因而出镜率极高但很多人再买貂皮大衣的时候都存有貂皮重新染色会不好吗的疑问,下面小编就和大家一起看看貂皮本色好还是染色好吧。 貂皮重新染色会不好吗 貂皮大衣因…

    2025年1月8日
    378.7K00
  • 暖腿神器能一直插着电吗

    因为天气变冷又恰逢双十一,很多人都为自己置入了取暖神器,像文中小编提到的暖腿神器便是大家最为喜爱的,毕竟发热范围广省电又好携带的取暖用具谁不爱呢,不过由于暖腿神器是通过插电来发热的,所以暖腿神器能一直插着电吗成了大家最好奇的,一起看看吧。 …

    2025年1月8日
    52.8K00
  • 电热毯开低温睡觉有害吗

    自打进入12月份以后天气便越来越冷,很多家庭为了保暖都用起了取暖工具。而电热毯便是其中的一种。但很多人在使用电热毯的时候都存有电热毯开低温睡觉有害吗的疑问。一起看看吧。 电热毯开低温睡觉有害吗 电热毯在低温下打开过夜是有害的。 电热毯可以用…

    2025年1月7日
    33.0K00
  • 牛奶绒四件套是不是越重越好

    随着冬季的到来很多人都为自己购入了冬季使用的四件套,而牛奶绒因为具有良好的导热性能,人体出的汗液可以快速排除体外,所以深受大家的喜爱,下面小编就和大家一起看看牛奶绒四件套是不是越重越好。 牛奶绒四件套是不是越重越好 牛奶绒四件套是越重越好。…

    2025年1月6日
    82.7K00
  • 拉筋板是不是要贴墙站

    拉筋板因为收纳方便且能帮人们很好的拉伸,很多友友家中都有他的存在,但由于拉筋板是有不同的坡度供大家选择,所以大家使用的时候都有拉筋板是不是要贴墙站的疑问,下面小编就和大家一起看看使用拉筋板哪些是要注意的。 拉筋板是不是要贴墙站 因人而异。 …

    2025年1月6日
    663.1K00
  • 脚趾环要戴多少天

    脚趾环要戴多少天是大家闲聊的时候一定会问的,毕竟随着全民健身热潮的兴起,越来越多的友友加入减肥大军中,也正因为这样,各种辅助减肥的器具也出现在日常生活中,像文中讲述的脚趾环便是当下最火热的一个,下面小编就和大家一起看看戴脚趾环需要注意什么。…

    2025年1月6日
    826.7K00
  • 建筑企业业绩如何办理备案?企业业绩备案有哪些注意事项?

    在建筑行业,一家建筑企业只有办理资质之后,才可以承接工程,为了企业未来更好的发展,也为了以后资质升级做准备,企业需要对工程业绩进行及时备案。那么建筑业绩备案的重要性是什么,建筑企业业绩备案有哪些注意事项。下面龙小招带大家了解一下建筑企业业绩…

    2025年1月5日
    100

发表回复

登录后才能评论

联系我们

156-6553-5169

在线咨询: QQ交谈

邮件:253000106@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

联系微信