准备工作
- 先创建一个文件夹gitShare,当然你也可以用公司的服务器,或者oschina,github . 我这里图方便 使用本地文件夹的方式来管理git库。
- 初始化两个以上的库(例如 libA libB .... ) , 这个libAt将作为主工程
- 在创建一个gitManager(模拟使用者),创建 pm文件夹(模拟管理者)
以上工作可以参考下边的命令:
cd /Users/zhangkun/Desktop
mkdir gitShare
cd gitShare
mkdir libA
mkdir libB
cd libA
git init --bare
cd ../
cd libB
git init --bare
cd /Users/zhangkun/Desktop
mkdir gitManager
cd gitManager
mkdir pm
cd pm
要开始了
-1 先将库中的代码clone下来
git clone /Users/zhangkun/Desktop/gitShare/libA
#发现libA文件夹中有了.git 文件夹 说明已经clone成功,然后在该目录下创一个工程,还有 记得要添加ignore文件
不知道的同学, 点这里,copy oc的忽略文件就可以了。
# 粘贴
vim .gitignore
git status
git commit -m "添加ignore文件,初始化工程"
git push
用上边的步骤把之前gitShare中创建的那几个库 都初始化一下。
初始化工作做完了,下面重点来了,初始化
#现在切换到libA的跟目录
cd /Users/zhangkun/Desktop /gitManager/pm
#使用下面的命令
#git submodule add 子模块的地址 要添加的地址
git submodule add /Users/zhangkun/Desktop /gitShare/libB lib/libB
#这条命令执行完成之后, 使用 ls -af,查看当前subfile,会发现多了一个.gitmodules的东西。
#使用 cat 查看一下
cat .gitmodules
#其实这时候,已经将libB作为子模块添加进来了。
提交
先push子模块,然后在push主项目
cd lib/libB
git status
git commit
git push
cd ../../
git status
git commit
git push
更新 维护
现在,创建一个张三的文件夹 ,测试一下我们刚才,搭建好的子模块
cd /Users/zhangkun/Desktop /gitManager
mkdir em
cd em
mkdir zhangsan
cd shangsan
git clone /Users/zhangkun/Desktop/gitShare/libA
#此时你会发现 ,之前关联号的子模块 并没有下载下来,使用
git submodule init
git submodule update
# ok 刚才配置号的库已经下载下来了。
cd /Users/zhangkun/Desktop /gitManager/pm
mkdir 李四
cd 李四
git clone /Users/zhangkun/Desktop/gitShare/libA
git submodule init
git submodule update
cd lib/libA
vim view.m
git checkout master
git add .
git commit
git push
cd ..
cd ..
# 查看一下子模块的状态
git submodule status
#更新主工程到远端
git add .
git commit
git push
# 此时张三还有原来的代码
cd 张三的目录
执行
git pull
git submodule init
git submodule update
# 完成更新