关于开源项目的Git仓库管理
本文最后更新于:7 天前
简介
- 仓库:Repository
- 分支:Branch
开源框架的使用,需要在上游原仓库代码的基础上进行自己业务的开发。
由于框架的版本迭代,框架的代码结构及业务可能会发生改变,这就会导致我们之前写的代码,在框架升级后无法正常运行。
为了保证Git提交记录可以一直在上游的分支上,所以我们需要进行多仓库管理。
目前推荐的做法为:
上游原仓 | ⇄ | 同步仓 | ⇄ | 业务仓 | |
---|---|---|---|---|---|
仓库说明 | 跟进最新改动 | 以上游仓为基础,我们需要进行一些自定义修改,统一化处理等功能 | 以同步仓为基础进行业务场景开发的仓库 | ||
分支说明 | 一般情况下我们只同步master分支 | 我们需要同步上游的master分支,然后将该master分支,再合并到我们自定义处理的分支上 | 我们需要同步仓自定义后的分支,在同步仓的基础上,再开自己的业务分支 | ||
⇄ | |||||
⇅ git merge | |||||
⇄ | |||||
⇅ git merge | |||||
sequenceDiagram
participant 上游仓库
participant 同步仓库
participant 业务仓库
loop 同步分支
同步仓库-->>上游仓库: master
上游仓库-->>同步仓库:
end
opt 检出 my-master
alt
同步仓库->>同步仓库: `master` merge into my-master
end
end
loop 同步分支
同步仓库-->>业务仓库: my-master
业务仓库-->>同步仓库:
end
opt 检出 my-dev
alt
业务仓库->>业务仓库: `my-master` merge into my-dev
end
end
操作过程:
Git 仓库是支持多远端功能的
先
git clone
一份上游仓库到本地然后到Git服务(如Gitee/Github/Gitlab)上创建一个空仓库,拿到仓库的链接,例:
https://gitee.com/yourname/yourrepository.git
将该仓库的链接添加到本地仓库中,一般情况下,origin 代表默认仓库,我们可以执行如下语句添加第二个仓库:
1
git remote add MySync https://gitee.com/yourname/yourrepository.git
然后将代码信息推送到刚刚添加的仓库上:
1
git push MySync master:master
这样我们的同步仓就拥有了完整的上游仓库信息
然后我们检出一个自己的主分支,用于做自定义处理等业务,如:去开源标识、第三方链接、初始化数据、强密码登录、全屏水印等功能
1
git branch checkout my-master
然后这个分支就一直保留下去,当作我们使用开源项目进行自己业务开发的 ‘模板’ 代码
当我们有了新的业务开发,同样到Git服务上创建一个新的空仓库,拿到仓库链接,例:
https://gitee.com/yourname/your-custom.git
然后将该链接添加到同步仓的远端中:
1
git remote add MyCustom https://gitee.com/yourname/your-custom.git
然后将
my-master
分支推送到我们的业务仓中:1
git push MyCustom my-master:my-master
这样我们的业务仓,就与 ‘模板’ 仓保持了一致的版本信息
为了避免误操作导致仓库信息错乱,我们应该
clone
业务仓到一个新的文件夹中,并且在my-master
分支的基础上新开一个分支,例如:my-dev
,以后所有的业务开发,都在my-dev
上进行。当模板仓(同步仓)与上游代码合并,或者自定义处理、统一性功能等进行了更新时,就用模板仓推送
my-master
到业务仓,然后业务仓再将my-master
与my-dev
合并即可