一个成功的 Git 分支模型 2

发布于 2022-06-03 13:01:04 字数 3857 浏览 999 评论 0

这个开发流程就是基于 a successful git model 这篇文章而来的

项目背景

张三 / 李四 / 王五 打算共同协作,开发一套博客系统

项目分工

张三 / 李四 负责文章系统
王五 负责评论系统

建立服务端仓库

git 虽然是分布式版本管理工具,但为了方便管理,我们需要建立一个中心仓库,先在服务端建立两条分支

master
develop

master 保存稳定版(production ready),开发人员平时的代码都提交到 develop 分支上

开发者的 Git 分支

张三的 Git 分支

因为张三和李四同时开发文章系统,所以就有了下面的分支

# 张三的Git分支
article (local)
lisi/article (via git remote add lisi http://lisi-server/lisi.git)
origin/master (via git remote add origin http://remote-server/blog.git)
origin/develop

李四的 Git 分支

跟张三类似,不过 article server 变成了张三的

# 李四的Git分支
article (local)
zhangsan/article (via git remote add zhangsan http://zhangsan-server/zhangsan.git)
origin/master (via git remote add origin http://remote-server/blog.git)
origin/develop

王五的 Git 分支

因为只有王五一个人开发评论系统,所以只要一条远程分支就行了

# 王五的Git分支
comment (local)
origin/master (via git remote add origin http://remote-server/blog.git)
origin/develop

开发过程

张三和李四假设张三负责文章的管理,及前端显示。李四负责文章的分类和标签系统。

张三开发完一部分后(n 次本地 commit),提交到本地的 git server(也就是李四添加的 http://zhangsan-server/zhangsan.git)。

李四开发完一部分后,因为要与张三开发的部分合并,所以需要执行一下 rebasemerge

# 当前在article分支中
git rebase zhangsan/article# 提交到本地的git server (也就是张三添加的http://lisi-server/lisi.git)。
git push local/article master

这时张三又开发完了一部分,他也会走跟李四一样的流程,rebase & push (如果有冲突,解决之)。

假设由张三统一负责将每日的开发进度提交到 remote develop 分支上,张三在执行了上面所说的流程后,提交到服务端的 develop 分支。但这时很可能王五已经把他写的代码提交了,所以要先执行一下 rebase

git rebase origin/develop
git push origin develop

这样张三和李四的代码就都提交到了服务端的 develop 分支上。王五那边的流程也一样,只是少了本地同步的过程。

开发完毕,进入测试阶段

经过几天的开发,各个功能都已基本完成,下面就要进入测试阶段。具体做法是在服务端新添加一个分支,命名为 release,所以这时服务端就有3个分支了

master
develop
release

三位同学都在本地新建一个 branch,对应服务端的 release 分支

git checkout -b release origin/release

分别进行测试,如果发现问题,则执行 pull & push

# 当前在release分支下
git pull origin release
git push origin develop

经过几天的测试后,发现没什么问题了,就可以发布稳定版了,假设为 0.1

git checkout master
git rebase origin/release
git tag 0.1
git push origin master --tags

同时别忘了把 release 分支上的代码与develop分支合并,保证 develop 分支上不会有遗留的 bug。(没有找到如何直接 merge 两个服务端 branch 的方法)

git checkout develop
git rebase origin/release
git push origin develop
# 删除服务端的release分支
git push origin :release

接下来就可以继续在 develop 分支上进行开发了。

添加新特性

博客系统需要添加 archives 功能,这个功能的开发就交给了新来的赵六。此时,在服务端新开一个分支,命名为 feature,这时服务端的分支就变成了这样

master
develop
feature/archive

赵六也在本地建立一个 archive 分支,每天提交到服务端的 feature/archive,赵六的 Git 分支是这样的(不相关的服务端 Git 已省去)

master
archive
origin/feature/archive

等到这个 feature 开发完了,与服务端的develop分支执行一下 rebase,然后再提交到服务端的develop,这样博客的 archive 功能就有了

git checkout archive
git rebase origin/feature/archive
git push origin feature/archive# 如果要删除服务端的feature/archive分支的话
git push origin :feature/archive

接下来的流程跟上面的一样:开发完毕后,新建 release 分支,在那上面进行bug修复,修复完毕后,merge 到服务端的 master 和 develop

紧急修复漏洞

博客出现了一个xss漏洞,需要尽快修复,这时新建一个 hotfix 分支(现在本地建,然后提交到服务端),然后对漏洞进行修复,修复完后,提交到服务端的 master 和 develop

git checkout master
git pull origin master
git checkout -b hotfix
# 漏洞修复...
# 修复完后
git push origin hotfix
git checkout master
git rebase hotfix
git push origin master
git push origin develop

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

JSmiles

生命进入颠沛而奔忙的本质状态,并将以不断告别和相遇的陈旧方式继续下去。

0 文章
0 评论
84960 人气
更多

推荐作者

lorenzathorton8

文章 0 评论 0

Zero

文章 0 评论 0

萧瑟寒风

文章 0 评论 0

mylayout

文章 0 评论 0

tkewei

文章 0 评论 0

17818769742

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文