Git Submodule完整教程(3/3)
2014-06-22 22:04
531 查看
2.8.1 牛刀小试
?
2.8.2 上路
??
首先把子模块的路径写入到文件/tmp/study-git-submodule-dirs中;
然后读取文件中的子模块路径,依次切换到master分支(修改都是在master分支上进行的),最后更新最近改动。
2.8.3 2013-01-19更新
网友@紫煌给出了更好的办法,一个命令就可以代替上面的bin/update-submodules.sh的功能:?
该后面的命令可以任意的,例如 git submodule foreach ls -l 可以列出每个子模块的文件列表
2.8.3 体验工具带来的便利
?git submodule的结果和project2的submodule commit id保持一致;
project1-b不再提示new commits了。
现在可以把工具添加到仓库了,当然你可以很骄傲的分享给其他项目组的同事。
?
2.9 新进员工加入团队,一次性Clone项目和Submodules
一般人使用的时候都是使用如下命令:?
新员工不耐烦了,嘴上不说但是心里想:怎么那么麻烦?
上面的命令简直弱暴了,直接一行命令搞定:
?
git help 对其解释:
--recursive, --recurse-submodules After the clone is created, initialize all submodules within, using their default settings. This is equivalent to running git submodule update --init --recursive immediately after the clone is finished. This option is ignored if the cloned repository does not have a worktree/checkout (i.e. if any of --no-checkout/-n, --bare, or --mirror is given)
2.9.1 使用一键方式克隆project2
?3.移除Submodule
牢骚:搞不明白为什么git不设计一个类似:git submodule remove的命令呢?我们从project1.git克隆一个项目用来练习移除submodule:
?
3.1 Step by
1、删除git cache和物理文件夹?
?
如果仅仅删除某一个submodule那么打开.gitmodules文件编辑,删除对应submodule配置即可。
3、删除.git/config的submodule配置 源文件:
[core] repositoryformatversion = 0 filemode = true bare = false logallrefupdates = true [remote "origin"] fetch = +refs/heads/*:refs/remotes/origin/* url = /home/henryyan/submd/ws/../repos/project1.git [branch "master"] remote = origin merge = refs/heads/master [submodule "libs/lib1"] url = /home/henryyan/submd/repos/lib1.git [submodule "libs/lib2"] url = /home/henryyan/submd/repos/lib2.git
删除后:
[core] repositoryformatversion = 0 filemode = true bare = false logallrefupdates = true [remote "origin"] fetch = +refs/heads/*:refs/remotes/origin/* url = /home/henryyan/submd/ws/../repos/project1.git [branch "master"] remote = origin merge = refs/heads/master
4、提交更改
?
4.结束语
对于Git Submodule来说在刚刚接触的时候多少会有点凌乱的赶紧,尤其是没有接触过svn:externals。本文从开始创建项目到使用git submodule的每个步骤以及细节、原理逐一讲解,希望到此读者能驾驭它。
学会了Git submdoule你的项目中再也不会出现大量重复的资源文件、公共类库,更不会出现多个版本,甚至一个客户的多个项目风格存在各种差异。
本文的写作来源于工作中的实践,如果您对于某个做法有更好的办法还请赐教,希望能留下您宝贵的意见。
原创文章,转载请注明出处! Git Submoudle使用完整教程--咖啡兔
相关文章推荐
- Git Submodule使用完整教程
- Git Submodule使用完整教程
- Git Submodule使用完整教程
- Git Submodule使用完整教程
- Git Submodule使用完整教程
- Git Submodule使用完整教程
- Git Submodule完整教程(1/3)
- Git Submoudle使用完整教程
- linux下git的submodule使用方法
- Git Submodule的坑
- git submodule init 出现错误
- Git Submodule 的認識與正確使用!
- git submodule init and filemode
- 如何从git中移除一个子模块(submodule)
- Git Submodule 的認識與正確使用!
- Git Submodule 的認識與正確使用!
- git submodule 学习笔记(一)
- git submodule
- git submodule的使用
- git submodule update failed