Hello,大家好,我是Fine。
相信Git对大家来说不陌生,Git的流程规范可以促进团队成员的协同开发、使得代码的版本控制和历史追溯更加可靠和方便、确保代码的一致性和可靠性。
每个公司在代码规范、分支管理策略不尽相同,今天来分享一下大厂的规范流程是什么样的。
以下是正文:
目前所在部门使用是主要是四种:dev(开发)、test(测试)、uat(预发)、release(生产)
小公司可能就一个 dev、一个 master 就搞定了,测试都是开发人员自己来🤣。
一般都会在本地默认创建一个 master 分支
git clone https://code.xxx.com/xxx/xxx.git
git fetch origin release:release
git checkout release
git checkout -b feat-0131-jie
此时,在你本地已经有了一个 release 分支对应着远程仓库的 release 分支,还有一个内容基于 release 分支的特性分支,之后便可以在这个特性分支上进行需求开发了。
推荐格式:分支责任-需求日期/需求号-开发人姓名
,一般按部门规范来,常见的有以下几种。
- feat:新功能
- fix:修补bug
- doc:文档
- refactor:重构(即不是新增功能,也不是修改bug的代码变动)
- test:测试
- chore:构建过程或辅助工具的变动
之所以要拉取 release/uat 分支而不是拉取 dev/test,是因为后者可能包含着一些其他成员还未上线或者可能有 bug 的需求代码,这些代码没有通过验证,如果被你给拉取了,然后又基于此进行新的需求开发,那当你需求开发完成,而其他成员的需求还没上线,你将会把这些未验证的代码一起发送到 uat/release 上,导致一系列问题。
首先先在本地把新的改动提交,提交描述的格式可以参考着分支名的格式
git add .
git commit -m "提交描述"
此时,本地当前分支已经记录了你的提交记录,接下来进行代码合并了
首先,我们需要认知到的是,每一个分支应该只对应一个功能,例如当我们开发需求 01 时,那么就创建一个 feat-01-jie
分支进行开发;开发需求 02 时,就另外创建一个 feat-02-jie
分支进行开发;修改生产环境的某个 bug 时,就创建 fix-jie-3378
进行开发,等等。
这样做的目的是,能够把不同的功能/需求/修改分离开来。想象一下这样一个场景,如果有某些紧急的需求是需要提前上线的,而此时你的分支里既包含了这些紧急的需求,又包含了其他未开发好的需求,那么这两种需求就不能拆开来分别进行提测和上线了。
其次,在合并代码时,我们要将四种分支模型(dev、test、uat、release)作为参照物,而不是把关注点放在自己的分支上。比如我们要在 dev 上调试,那就需要把自己的分支合并到 dev 分支上;如果我们需要提测,则把自己的分支合并到 test 分支上,以此类推。
即,我们要关注到,这四个环境的分支上,会有什么内容,会新增什么内容。切记不能反过来将这四个分支合并到自己的代码上!! 如果其他成员将自己的代码也提交到 dev 分支上,但是这个代码是没有通过验证的,此时你将 dev 往自己的分支上合,那之后的提测、上预发、生产则很大概率会出问题。所以一定要保持自己的分支是干净的!
接下来介绍合并代码的方式:
git push origin feat-0131-jie
先接着上面的提交步骤,将自己的分支推送到远程仓库。
然后在线上代码仓库中,申请将自己的分支合并到 xx 分支(具体是哪个分支就根据你当前的开发进度来,如 test),然后在线上解决冲突。如果有权限就自己通过了,如果没有就得找 mt 啥的
## 先切换到你要提交的环境分支上,如果本地还没有就先拉取下来
git fetch origin test:test
git checkout test
## 然后将自己的分支合并到环境分支上(在编辑器解决冲突)
git merge feat-0131-jie
## 最后将环境分支推送到远程仓库
git push origin test
## 先切换到你要提交的环境分支上,如果本地已有该分支,则需要先拉取最新代码
git checkout test
git pull origin test
## 然后将自己的分支合并到环境分支上(在编辑器解决冲突)
git merge feat-0131-jie
## 最后将环境分支推送到远程仓库
git push origin test
这是因为在团队协作开发的过程中,将合并操作限制在线上环境有以下几个好处:
当然,并非所有情况都适用于第一种方式。在某些特定情况下,例如个人项目或小团队内部开发,允许本地合并也是可以的。但在大多数团队协作的场景中,将合并操作集中在线上环境具有更多优势。
当我们这一版的需求完成后,本地肯定已经留有很多分支了,这些分支对于之后的开发已经意义不大了,留下来只会看着一团糟。
git branch -d <分支名>
## 如果要强制删除分支(即使分支上有未合并的修改)
git branch -D <分支名>
预生产环境是介于测试和生产环境之间的一个环境,它的目的是模拟生产环境并进行更真实的测试。它是一个重要的测试环境,需要保持稳定和可靠。通过对修复的bug再次提交到测试环境测试,可以确保预生产环境中的软件版本是经过验证的,并且没有明显的问题。
当然,也不是非要这么做不可,紧急情况下,也可以选择直接发到预生产重新测试,只要你保证你的代码 99% 没问题了。
假设是在本地合并,本来要把特性分支合并到 uat 分支,结果不小心合到了 release 分支(绝对不是我自己的案例,绝对不是。。。虽然好在最后同事本地有我提交前的版本,事情就简单很多了)
首先切换到特性分支合并到的错误分支,比如是 release
git checkout release
然后查看最近的合并信息
git log --merges
撤销合并
git revert -m 1 <merge commit ID>
最后,撤销远程仓库的推送
git push -f origin release
原文地址:https://juejin.cn/post/7327863960008392738
侵删
还没有使用过我们刷题网站(https://fe.ecool.fun/)或者前端面试题宝典的同学,如果近期准备或者正在找工作,千万不要错过,我们的题库主打无广告和更新快哦~。
老规矩,也给我们团队的辅导服务打个广告。