git子树合并建立映射

1、问题:一个新项目需要在老项目的基础上魔改,但是老项目还处于迭代周期,新项目大部分组件功能来自老项目,老项目修复的问题需要同步到新项目,需要再次在新项目上修改,重复的修改增加工作量还让人心情烦躁,急需解决

2、需求:新旧两个项目之间最好能同步修改,或者说建立映射关系,可以合并

3、思路:在git里面存在子树合并的概念,即两个项目之间建立映射关系:在新项目处引入老项目的远程分支,然后到新项目主分支合并这个远程分支,之后老项目有更新,就来这个分支上拉取更新,然后再到新项目的主分支合并

4、解决:

先初始化新项目

$ git init

新项目添加远程分支url进存储库(rack_remote是分支名称,网址是分支所在的github库位置)

$ git remote add rack_remote https://github.com/rack/rack

新项目新建远程分支(rack_remote是分支名称,要和上一步的分支名称一致)

$ git fetch rack_remote --no-tags

新项目新建分支并跳转到这个分支,就可以看到老项目的内容,使用这个命令前最好提交一次,不然会自动把老项目拉到本地(-b是没有分支就新建分支,rack_branch是新分支的名称,rack_remote/master是远程分支,可以用git branch -r来查远程分支)

$ git checkout -b rack_branch rack_remote/master

跳回主分支

$ git checkout master

把老项目从刚新建的分支拉到主分支

//拉到根目录
$ git read-tree --prefix= -u rack_branch
//拉到分支中的 rack 子目录
$ git read-tree --prefix=rack/ -u rack_branch

等老项目有更新的时候就跳到分支拉取最新代码

$ git checkout rack_branch
$ git pull

跳回主分支合并

$ git checkout master
$ git merge --squash -s recursive -Xsubtree=rack --allow-unrelated-histories rack_branch

解决冲突提交就好了,后续如果发现老项目存在问题那么可以到新建的分支上面去修改然后推送回老项目

 

posted @   Pavetr  阅读(37)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
点击右上角即可分享
微信分享提示