Git Subtree 的介绍及使用
2016-04-25 18:49
411 查看
Git Subtree 的介绍及使用
应用场景
有项目A、项目B。有LibraryC,为项目A的子项目||子目录。
项目B也想用LibraryC,作为自己的子项目||子目录。
希望代码同步,维护方便,更新迭代。
解决方案
git submodule or git subtree
孰胜孰劣/优缺点
git submodule
仓库 clone下来需要 init 和 update会产生像 .gitmodule 类似的文件
git submodule 删除起来比较费劲
git subtree
避免以上问题管理和更新流程比较方便
git v1.5.2以后建议使用git subtree (git v1.7.11 才合并进来)
git subtree的使用
1.如果LibraryC已经在使用subtree之前被项目A引用
拆分LibraryC
cd 项目A git subtree split -P LibraryC -b tempLibraryC (把libraryC抽离为tempLibraryC) cd ../ mkdir tempDir cd tempDir git init git pull ../项目A tempLibraryC git remote add origin git@192.168.1.123:rep/libraryC.git git push origin -u master git filter-branch -f --index-filter "git rm -r -f -q --cached --ignore-unmatch LibraryC" --prune-empty HEAD //清理掉原来的commit记录
2.在项目B中使用LibraryC
cd 项目B git remote add libraryc git@192.168.1.123:rep/libraryC.git //添加源 git subtree add --prefix LibraryC libraryc master //后三个参数分别是:目录、源名称、分支名 git subtree pull --prefix LibraryC libraryc master //更新代码 git subtree push --prefix LibraryC libraryc master //提交代码
相关文章推荐
- RPC failed; result=22, HTTP code = 411
- git更新已經刪除的文件
- 提取Git每次提交后Commit的文件
- GIT迁移服务器
- 分布式版本管理git入门指南使用资料汇总及文章推荐
- git终极指南:在实际开发中的应用
- Git远程操作详解
- 25个 Git 进阶技巧(翻译)
- 详解版本控制利器Git,SVN的异同以及适用范围
- Ruby实现的删除已经合并的git分支脚本分享
- 在 Shell 提示符中显示 Git 分支名称的方法
- Git使用基础篇(一些常用命令和原理)
- git fork同步是什么意思?
- Git使用小坑 Out of memory错误的解决方法
- Python的高级Git库 Gittle
- 使用GIT进行源码管理――GUI客户端小结
- 使用git代替FTP部署代码到服务器的例子
- linux系统安装git及git常用命令
- 分享下自己总结的Git常用命令
- Git 常用命令速查表(图文+表格)