Git Submodule简单使用

Git Submodule

近期用到了这个命令,主要是为了实现在一个git仓库中,引入其他git仓库,这种适用于你想在主工程中引入其他library库,主工程以submodule的形式包含子工程,子工程可以有自己的git操作,比如commit、push、rebase等。

这里笔者用一个实际的例子来介绍这个命令的使用,不知道大家有没有在原生工程嵌入React Native?熟悉React Native工程的同学会知道有个一个android工程,如下图:

你会发现下面还会有一个iOS工程,我们客户端开发一般都会各自维护一个git仓库,为了让Android跟iOS不在同一个工程提交commit,主要是为了方便维护,所以就想着怎么在RN工程中引入Android工程和iOS工程,明白我们的需求之后,我们知道git中有submodule的操作,所以下面直接实操吧。

添加submodule工程

git submodule add http://git.code.oa.com/TCW/Crowdsource-android.git android

执行完这条命令之后,通过git status,可以看到变更信息:

On branch master
Your branch is up-to-date with 'origin/master'.
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    new file:   .gitmodules
    new file:   android

然后添加子模块:

git add .getmodules android
git commit -m "add android submodule."
git submodule init

ok,到这里你成功添加了一个submodule.

修改Submodule

进入submodule.

cd android

我这里的submodule是android.

这时我修改了android工程里面的内容,git status一下:

提交submodule的内容到远程:

git add .
git commit -m "嵌入React Native"
git push

提交后,看下Submodule在主工程中的变更:

cd ..
git status

如下图:

这时候,提交主工程的变更:

git add .
git commit -m "update android submodule"
git push

ok,这里已经成功修改了submodule.

更新Submodule

这里有个问题,你在自己机器完成了submodule的添加和修改,那其他同学想更新怎么办?

在主工程根目录运行以下命令:

git submodule foreach git pull

还需要更新下submodule:

cd android
git pull

ok,这样其他团队成员就能拉到最新的工程代码啦。

总结

关于如何在RN工程中通过submodule方式引入android工程已经大致实操了一遍,还有clone submodule和remove submodule的操作就不演示了,可以参考下面提供的链接。

更多参考

使用Git Submodule管理子模块

原文发布于微信公众号 - 小巫技术博客(wwjblog)

原文发表时间:2017-06-30

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏前端杂谈

什么是前端路由

47911
来自专栏玩转JavaEE

MongoDB副本集搭建

我们之前的案例都是在单个节点上实现的,在生产环境中这种做法是有风险的,如果服务宕机、崩溃或者硬盘坏了都会对公司业务造成损失,因此我们需要数据备份。在MongoD...

3766
来自专栏Django中文社区

django 实现简单的搜索功能

搜索是一个复杂的功能,但对于一些简单的搜索任务,我们可以使用 django model 层提供的一些内置方法来完成。本文将结合 django 模型管理器的 fi...

1.1K5
来自专栏吴伟祥

IntelliJ IDEA代码编辑器中的HTTP客户端

Scratch文件可用于在开发期间测试HTTP请求。临时文件不存储在项目中,因此IntelliJ IDEA可以修改它并添加有关请求的其他信息。从临时文件执行HT...

4563
来自专栏Linux运维学习之路

ansible批量管理软件部署及剧本

服务器版本信息: Centos6.9 [root@db02 ~]# uname -a Linux db02 2.6.32-696.el6.x86_64 #1 S...

9097
来自专栏WindCoder

windows下python中pip与easy_install相关

下载地址:https://pypi.python.org/pypi/ez_setup

1071
来自专栏coding

windows下安装redis并在后台静默开启

1542
来自专栏移动端周边技术扩展

Vue.js学习笔记(1)

881
来自专栏王磊的博客

CentOS安装运行NodeJS框架Express

 安装依赖包 yum -y install gcc make gcc-c++ openssl-devel wget 下载/解压NodeJs wget http:...

4109
来自专栏静下来

增加wordpress可以上传.torrent文件

今天想上传个文件,是.torrent后缀的。。就是种子,为什么要上传,咱就不说了。。。wordpress本身是不支持上传.torrent文件的,不过我们可以用代...

3355

扫码关注云+社区

领取腾讯云代金券