Git 实战系列(十三)Git 分支模型实践
有了一套成熟的分支模型以及配套的权限控制之后,接下来我们以一个例子来演示如何实践这套流程。
分支模型实践
创建版本分支
首先,项目管理员(Master)从 master
分支中创建出版本分支 release-*
进行新版本的开发,*
为发布日期:
1 | $ git checkout -b release-20190101 |
版本分支 release-*
一般是锁起来的,不允许随便提交代码。
创建特性分支
然后,开发人员(Developer)从版本分支中创建出特性分支,并在其上进行特性开发:
1 | $ git checkout -b feature-test |
由于特性分支可能会跨版本开发,因此需要定期维护:主要的工作就是定期将 master
分支或版本分支合并进来,保持同步,代码够新。使用命令:rebase。
Merge Request
开发完毕后,开发人员(Developer)需要整理特性分支——例如从中挑选出能够发版的提交,剔除掉不能发版的提交。如果想要筛选出将要被合并的提交有哪些,可以参考这里。
整理完毕后,给项目管理员(Master)发起一个 MR,请求合并到版本分支。
标记新版本
当版本分支发布完毕,Master 打 Tag 标记该新版本,以便后续回顾:
1 | $ git tag tag-20190101 -m "XX 项目 v1.0 版本" |
注意,在默认情况下,git push
并不会把标签(tag)推送到远端仓库上,只有通过显式命令才能分享标签到远端仓库。其命令格式如同推送分支,运行 git push origin [tagname]
即可。如果要一次推送所有本地新增的标签上去,可以使用 --tags
选项。
清理分支
最后是一些清理工作,Master 需要删除已完成开发的版本分支、特性分支,避免分支越来越多导致不好管理。例如:
1 | $ git branch -d release-20190101 |
最后,列出所有远程和本地分支确认下:
1 | $ git branch -a |
总结
代码提交指南
- 请不要在更新中提交多余的白字符(whitespace)。Git 有种检查此类问题的方法,在提交之前,先运行
git diff --check
,会把可能的多余白字符修正列出来。 - 请将每次提交限定于完成一次逻辑功能。并且可能的话,适当地分解为多次小更新,以便每次小型提交都更易于理解。
- 最后需要谨记的是提交说明的撰写。可以理解为第一行的简要描述将用作邮件标题,其余部分作为邮件正文。
分支管理指南
- 主分支
master
一般不提交代码,只合并代码。 - 各特性分支要定期将
master
分支合并进来,避免后续处理合并请求时产生冲突,以减轻项目管理员的工作负担。 - 发版之后,项目管理员要记得打 tag 。
技巧
跟踪分支
查看本地分支和远程分支的跟踪关系:
1 | $ git branch -vv |
设置本地分支 master
跟踪远程分支 origin/<branch>
:
1 | $ git branch --set-upstream-to=origin/<branch> master |
删除本地远程分支
1 | -r |
删除本地远程分支
1 | $ git branch -r -d origin/branch-name |
参考
- 《分布式 Git》