来源于:http://aoxuis.me/posts/2013/08/07/git-subtree/
使用场景
例如,在项目Game中有一个子目录AI。Game和AI分别是一个独立的git项目,可以分开维护。为了避免直接复制粘贴代码,我们希望Game中的AI子目录与AI的git项目关联,有3层意思:
- AI子目录使用AI的git项目来填充,内容保持一致。
- 当AI的git项目代码有更新,可以拉取更新到Game项目的AI子目录来。
- 反过来,当Game项目的AI子目录有变更,还可以推送这些变更到AI的git项目。
用git subtree可以轻松满足上面的需求。
git subtree用法
针对第一段的3条需求,我分别说明具体的命令。
1. 第一次添加子目录,建立与git项目的关联
建立关联总共有2条命令。
语法:git remote add -f <子仓库名> <子仓库地址>
解释:其中-f意思是在添加远程仓库之后,立即执行fetch。
语法:git subtree add --prefix=<子目录名> <子仓库名> <分支> --squash
解释:–squash意思是把subtree的改动合并成一次commit,这样就不用拉取子项目完整的历史记录。–prefix之后的=等号也可以用空格。
示例
$git remote add -f ai https://github.com/aoxu/ai.git $git subtree add --prefix=ai ai master --squash
2. 从远程仓库更新子目录
更新子目录有2条命令。
语法:git fetch <远程仓库名> <分支>
语法:git subtree pull --prefix=<子目录名> <远程分支> <分支> --squash
示例
$git fetch ai master $git subtree pull --prefix=ai ai --squash
3. 从子目录push到远程仓库(确认你有写权限)
推送子目录的变更有1条命令。
语法:git subtree push --prefix=<子目录名> <远程分支名> 分支
示例
$git subtree push --prefix=ai ai master
参考资料:
相关推荐
接下来将详细介绍为何选择使用Git Subtree,以及它的使用方法。 首先,Git Subtree相较于Submodule有几个优势: 1. 管理和更新流程比较方便。使用Subtree时,用户只需通过几个简单的命令就可以完成子目录的合并和...
使用 `git subtree split` 命令可以将一个子目录转换为一个新的 Git 仓库。例如,如果你有一个名为 `lib` 的子目录,可以运行 `git subtree split --prefix=lib --branch lib-repo` 来创建一个名为 `lib-repo` 的...
这是我使用 git subtree 维护 Go (golang) 项目依赖项的首选方法的后续示例。 介绍 有很多方法可以构建和维护需要外部库的 Go 项目。 最简单的方法(已经内置到 Go 工具链本身中)是在所有依赖项上运行go get ,并...
吞咽子树 一个小 gulp 模块,可... 最简单的检查方法是查看git subtree抛出。 如果命令不可用,Gulp 将静默失败。 有关如何安装它的更多信息,请参见。 用法 var subtree = require ( 'gulp-subtree' ) ; var clean =
- **总结**: 介绍了分支的基本概念、使用方法以及分支管理策略。 #### 四、服务器上的Git **4.1 协议** - **常见协议**: - SSH: 更安全,需要密钥对。 - HTTPS: 更易配置,但可能需要认证。 - HTTP: 简单配置...
24.5 git-subtree 插件/ 353 第25章 Android 式多版本库协同/ 356 25.1 关于 repo/ 357 25.2 安装 repo/ 357 25.3 repo和清单库的初始化/ 359 25.4 清单库和清单文件/ 360 25.5 同步项目/ 361 25.6 建立 Android ...
- **什么是Subtree**:Git subtree是一种将两个独立的Git仓库进行部分集成的方法。它将一个仓库作为一个子目录添加到另一个仓库中,这样你可以在主项目中工作,同时能够拉取和提交子项目的变化。 - **为什么使用...
在Drupal社区中,部署策略通常包括使用版本控制系统(如Git)来管理和更新项目,但"mr-drupal"采取了一种不同的方法,避免了使用tarball(压缩包)直接检入Git、Git子模块或Git-subtree等复杂操作。 描述进一步强调...
- Git使用图形化的表示方法来展示项目的整个历史,包括所有的分支和合并过程。 - 可以使用`gitk`工具或者第三方可视化工具如`git gui`等来查看历史图表。 **6. 分支是什么** - **分支定义**:分支实际上是对项目某...
用法用法: sh deploy.wordpress.org....添加为子树 git subtree add --prefix deploy-git-wordpress-org https://github.com/aubreypwd/deploy-git-wordpress-org 1.0-summit --squash从存储库更新到最新版本 git subt
很多是在Git中文的QQ群中讨论出来的,把一些经验总结一下:使用情况:例如Android系统代码和app之间可以使用这种submodule的方法来管理。快速上手:其它情况下submodule不适用,可以用subtree来代替。可以同步一个...
- **使用Git subtree**:Git subtree将另一个仓库的代码合并到你的主项目中,同时保持各自的提交历史。这种方法更灵活,但操作相对复杂。 6. **最佳实践** 正确使用Git子模块的关键在于理解它们是设计用来协作和...
JSQMessagesViewController 对支持。 依赖项和被添加为git子树模块。... 为此: git subtree pull --prefix JSQMessagesViewController https://github.com/jessesquires/JSQMessagesViewController master --squash
要实现这一点,需要先设置`git subtree add --prefix=public origin gh-pages`添加远程分支,然后在每次更新完成后使用`git subtree push --prefix=public origin gh-pages`推送更改。 为了使博客功能更加丰富,...
在主项目的根目录中,添加子树: $ git subtree add --prefix=libs/login git@github.com:wordpress-mobile/WordPress-Login-Flow-Android.git develop 这将创建一个新目录libs/login ,其中包含该存储库的内容。...
DicomAnonymizerTool-Lambda 在AWS Lambda函数中运行RSNA 用法 将GET请求发送到API-...子树推送/ client到gh-pages进行部署: git subtree push --prefix client origin gh-pages 测试在浏览器中显示DICOM文件: :
恩卡 从当前的Jira视图中更轻松地打印卡片。 灵感来自 。 用法 将Encard小书签拖到您的书签栏中,然后从Jira视图中激活它,该视图包含您要从中创建卡片的项目。... 这使用git subtree来推送dist目录。 gulp deploy
- 使用`git subtree`或`git submodule`管理依赖的第三方库。 9. **Git实践与版本控制策略** - 开发新功能时,创建新分支,完成后再合并到主分支。 - 使用`git flow`等工具实施更复杂的分支策略,如特性分支、...
安装将此存储库直接复制到您的catkin工作目录中(例如,通过克隆它或使用git subtree ),并使用catkin make 。用法该驱动程序包括两个节点: nomagic_ur_rtde_driver公开FollowJoinTrajectory和MoveUR动作服务器...