Mic_chen

It is not the strongest of the species that survive, nor the most intelligent, but the one most responsive to change

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

1.1 分支管理

综合评估git flowgithub flowgitlable flow后,结合开发团队的规模、提交频率及所要应对的业务场景,参考git flow简化其内部分支管理,参考gitlab flow强化外部分支管理,如 1所示。

 

 

git flow分支管理

1.1.1 内部分支管理

(1) 内部开发,主要有两个常驻分支,一个master分支和一个dev分支,master为持续集成的发布分支,dev为开发分支。

(2) git flow中的hotfixfeature不做强制创建分支的要求,参考github flow不区分功能分支和补丁分支,统称为内部开发的临时分支,如果不存在多人协同,也可在本地创建分支管理。

(3) 内部开发的临时分支来自dev分支,开发完成合并到dev分支后删除。

(4) 提交到dev分支的代码需要由指定人员进行review,并自测保证系统正常运行才能push到远程仓库

(5) 发布过程可视情况是否创建release分支,如果近期没有新功能提交且发布过程短,可以使用dev分支替代release分支,在发布过程中禁止dev分支的推送,发布过程中出现的问题直接在dev上修复,然后同步到master

1.1.2 外部分支管理

(6) 每对外发布一个新版本时,在master分支的最新commit打上tag加上版本说明,并从master创建分支stable-vx.x,此分支只修复本版本中的bug,原则上不再集成新功能

(7) 已发布稳定版本的问题修复后提交先到stable分支,同时也同步到dev分支,后续内部发布是会更新到master分支。

1.2 子模块管理

参考git submodule管理项目仓库和平台仓库的依赖关系,如 2所示,这种管理方式具备如下优势:

(8) 对于子工程来说,不需要知道自己的主项目的存在,子模块是一个完整的git仓库,按照正常的git代码管理规范操作即可;

(9) 对于主项目而言,子模块的远程仓库发生更新时,可以在主项目中通过git status查看,并选择是否需要使用git submodule update更新子模块。

(10) 当主项目下子模块文件夹的内容发生未跟踪的修改,且需要同步到子模块远程仓库时,可以进入子模块文件夹,使用git push推送到子模块的远程仓库。

具体操作详见2.4

 

 

 

项目仓库和平台仓库管理

 

 

2.1 子模块

2.1.1 创建子模块 

mkdir -p submodule-dir 

cd submodule-dir 

git submodule add -b  

git status 

git add . 

git commit -m 

git push 

2.1.2 拉取仓库代码 

拉取主工程仓库同时拉取子模块仓库代码操作如下,如果不想拉取子模块仓库代码,可以只执行第一条命令,主工程可以根据配置文件选择拉取哪些子模块仓库。 

git clone URL

git submodule init 

git submodule update 

或者使用命令 

git clone URL 

2.1.3 更新子模块 

如果子模块远程仓库有更新,主模块通过git status 可以查看,然后执行如下命令可以同步更新: 

git submodule update --remote 

2.1.4 提交子模块的修改 

提交子模块的修改可以在子模块的仓库中修改后提交到远程,然后通过上述2.4.3更新子模块。 

但是实际开发过程中,通常会在主模块的开发环境中直接修改子模块,可以在主模块中通过git status 可以查看,但是主模块中是无法提交的,需要切换到子模块的目录,然后按照子模块的提交流程操作如下,其中推送的命令需要注意。 

git add

git commit -m 

git push origin HEAD:<name-of-remote-branch> 

2.1.5 删除子模块 

git submodule deinit submodule-dir 

git rm submodule-dir 

git commit -m "" 

git push

 

posted on 2024-06-13 10:03  Mic_chen  阅读(4)  评论(0编辑  收藏  举报