本文地址:https://segmentfault.com/a/1190000004963641
在 2005 年的某一天,Linux 之父 Linus Torvalds 发布了他的又一个里程碑作品——Git。
它的出现改变了软件开发流程,大大地提高了开发流畅度!
直到现在仍十分流行,完全没有衰退的迹象。
Git
入门教程,Git 入门教程大家可以参考:
Git 教程合集
。
既然是讲在团队中的应用实践,我就尽可能地结合实际场景来讲述。
1.习惯养成
Git
时没有一些规范,那么将是一场难以醒来的噩梦!
然而,规范固然重要,但更重要的是个人素质,在使用
Git
时需要自己养成良好的习惯。
1.1 提交
-
提交时的粒度是一个小功能点或者一个 bug fix,这样进行恢复等的操作时能够将「误伤」减到最低;
-
用一句简练的话写在第一行,然后空一行稍微详细阐述该提交所增加或修改的地方;
-
不要每提交一次就推送一次,多积攒几个提交后一次性推送,这样可以避免在进行一次提交后发现代码中还有小错误。
git rebase -i [SHA]
,其中 SHA 是上一次提交之前的那次提交的,在这里是 3b22372。
前提是,想要合并的那几次提交还没有推送到远程!
1.2 推送
1.3 拉取
https://ihower.tw/blog/archives/3843。
1.4 合并
反过来或者不是父子关系的两个分支以及互相已经 git merge 过的分支,就不要采用 git rebase 了,避免出现重复的冲突和提交节点。
2.分支管理
的一大特点就是可以创建很多分支并行开发。
正因为它的灵活性,团队中如果没有一个成熟的分支模型的话,那将会是一团糟。
2.1 分支模型
Git
Flow 的分支模型,它能够应对 99% 的场景,剩下的那 1% 留给几乎不存在的极度变态的场景。
Git
Flow 就是给原本普普通通的分支赋予了不同的「职责」:
-
master——最为稳定功能最为完整的随时可发布的代码;
-
hotfix——修复线上代码的 bug;
-
develop——永远是功能最新最全的分支;
-
feature——某个功能点正在开发阶段;
-
release——发布定期要上线的功能。
代表它们是「主要分支」,其他的分支是基于它们派生出来的。
主要分支每种类型只能有一个,派生分支每个类型可以同时存在多个。
各类型分支之间的关系用一张图来体现就是:
2.2 工具选择
对于工具的选择,我一直都是秉承「哪个能更好地解决问题就用哪个」这个原则。
所以,只要不影响到团队,用什么工具都是可以接受的。
但根据多数开发人员的素质情况来看,建议使用图形化工具,例如 SourceTree(https://www.sourcetreeapp.com)。
如果想用命令行,可以啊!
先在心里问下自己:
「我
Git
牛逼不?
会不会惹麻烦给别人?
」
Git
Flow 时,推荐使用 SourceTree 与 GitLab (https://gitlab.com/)配合的形式:
-
用 SourceTree 创建 feature 等分支以及本地的分支合并、删除;
-
用 GitLab 做代码审核和远程的分支合并、删除。
3.事前准备
Git
Flow 的部分操作自动化处理,要对 SourceTree 和 GitLab 进行一下配置。
3.1 SourceTree
并且,每次合并时会自动创建新的包含分支信息的提交节点。
如果没有特殊需求,直接按下对话框中的「OK」就好了。
初始化完成后会自动切换到 develop 分支。
3.2 GitLab
为它们设置权限,只有项目负责人可以进行推送和删除等操作。
4.开发流程
Git
Flow 之后,所有工作都要围绕着它来展开,将原本的流程与之结合形成「基于
Git
Flow 的开发流程」。
4.1 开发功能
如果是多人配合的话,创建分支并做一些初始化工作之后就推送创建远程分支;
否则,直到功能开发完毕要合并进 develop 前,不要创建远程分支。
合并方式参照上文中的「合并」,如果有冲突则自己和配合的人一起解决。
有问题就找负责开发的人去修改,没有就接受请求并删除对应的 feature 分支。
4.2 测试功能
若发现了 bug,相应的开发人员就在 release 分支上或者基于 release 分支创建一个分支进行修复。
4.3 发布上线
添加了哪些功能,修复了什么问题。
4.4 修复问题
5.额外说明
5.1 分支命名
强烈推荐用如下形式:
-
feature——按照功能点(而不是需求)命名;
-
release——用发布时间命名,可以加上适当的前缀;
-
hotfix——GitLab 的 issue 编号或 bug 性质等。
5.2 发布日期
所以,确保一个固定的发布周期至关重要!
这是必须要控制住的!
不然任由着需求方说「这个今天一定要上」「那个明天急着用」的话,技术人员就等着进医院吧!
荐
阅
读
1. 仅推荐一个置顶的程序员公众号
2. 寓教于乐,用玩游戏的方式学习 Git
3. 在浏览器输入 URL 回车之后发生了什么
4. 在阿里干了 5 年,面试个小公司挂了…
在看
本文分享自微信公众号 - Java后端(web_resource)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。
相关文章
暂无评论...