标签:red object each cache hub push update git add conf
本文转自:https://blog.csdn.net/qq_37788558/article/details/78668345
实例代码: 父项目:https://github.com/jjz/pod-project 子项目:https://github.com/jjz/pod-library
基于公司的多项目,我们提取了一个公共的类库提供给多个项目使用,但是这个library怎么和git在一起方便的管理呢? 需要解决以下的几个问题:
解决以上问题,我使用git 的Submodule
来解决。
git Submodule 是一个很好的项目协作工具,他允许类库项目做为repository,子项目做为一个单独的git项目存在父项目中,子项目可以有自己的独立的commit,push,pull。而父项目以Submodule的形式包含子项目,父项目可以指定子项目header,父项目中会提交 Submodule的信息,在clone父项目的时候可以把Submodule初始化。
git submodule add git@github.com:jjz/pod-library.git pod-library
使用 git status
命令可以看到
多了两个需要提交的文件gitmodules
内容
这里记录了子项目的目录和子项目的git信息
这里是子项目的commit的id,git并不会记录Submodule的文件变动,它是按照这个commit的git来对比Submodule的变动的
这两个文件都需要提交到父项目的git中
我们还可以这样添加Submodule
首先要确认有对Submodule的commit权限
进入Submodule目录里面,对修改的文件进行提交
cd pod-library/
我们修改了其中的一个文件看下文件的变动
commit submodule
git commit -a -m‘test submodule‘
push 到远端
>git push
然后再回到父目录:
可以看到pod-library已经变更为最新的commit id
Subproject commit 330417cf3fc1d2c42092b20506b0d296d90d0b5f
我们需要把推送到父项目的远端
更新的方法有两种:
git submodule foreach git pull
在Submodule的目录下面更新
cd pod-library
git pull
注意更新Submodule的时候如果有新的commit id
产生,需要在父项目产生一个新的提交,pod-libray文件中的 Subproject commit会变为最新的commit id
--recursive
git clone git@github.com:jjz/pod-project.git --recursive
会自动init Submodule
或者使用第二种方法
先clone父项目
git clone git@github.com:jjz/pod-project.git
cd pod-project
git submodule init
git submodule update
git 并不支持直接删除Submodule需要手动删除对应的文件
作者:姜家志
链接:http://www.jianshu.com/p/d433d3417a19
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
标签:red object each cache hub push update git add conf
原文地址:https://www.cnblogs.com/freeliver54/p/10161726.html