开启生长之旅!这是我参与「日新计划 12 月更文应战」的第36天,点击检查活动概况
作中的Git实践
Git flow
Git flow(Git工作流程)是指软件项目中的一种Git分支办理模型,经过了很多的实践和优化,被认为是现代敏捷软件开发和DevOps(开发、技能运营和质量保证三者的交集)的最佳实践。Git flow主要流程及关键分支:原图地址-processon
✅主分支:master,安稳版别代码分支,对外能够随时编译发布的分支,不允许直接Push代码,只能请求兼并(pull request),且只承受hotfix
、release
分支的代码兼并。
✅热修正分支:hotfix,针对线上紧迫问题、bug修正的代码分支,修正完后兼并到主分支、开发分支。
- ① 切换到
hotfix
分支,从master
更新代码; - ② 修正bug;
- ③ 兼并代码到
dev
分支,在本地Git中操作即可; - ④ 兼并代码到
master
分支。
✅发版分支:release,版别发布分支,用于迭代版别发布。迭代开发完成后,兼并dev
代码到release
,在release
分支上编译发布版别,以及修正bug(定时同步bug修正到dev
分支)。测试完成后此版别能够作为发版使用,然后把安稳的代码push到master
分支,并打上版别标签。
✅开发分支:dev,开发版别分支,针对迭代使命开发的分支,日常开发原则上都在此分支上面,迭代完成后兼并到release分支,开发、发版两不误。
✅其他开发分支:dev-xxx,开发人员能够针对模块自己创建本地分支,开发完成后兼并到dev开发分支,然后删去本地分支。
金屋藏娇stash
当你正在dev
分支开发一个功用时,代码写了一半,忽然有一个线上的bug急需求马上修正。dev
分支Bug没写完,不便利提交,就不能切换到主分支去修正线上bug。Git供给一个stash
功用,能够把当时工作区、暂存区 未提交的内容“躲藏”起来,就像什么都没产生相同。
# 有未提交修正,切换分支时报错
$ git checkout dev
error: Your local changes to the following files would be overwritten by checkout:
README.md
Please commit your changes or stash them before you switch branches.
Aborting
# 躲藏
$ git stash
Saved working directory and index state WIP on main: 2bc012c s
# 检查被躲藏的内容
$ git stash list
stash@{0}: WIP on main: 2bc012c s
# 比较一下,什么都没有,一切都没有产生过!
$ git diff
# 去其他分支修正bug,修正完成回到当时分支,康复工作区
$ git stash pop
在上面示例中,有未提交修正,切换分支时报错。过错提示信息很明确了,commit
提交或stash
躲藏:Please commit your changes or stash them before you switch branches.
如果切换分支时,未提交修正的内容没有抵触,是能够成功切换的,未提交修正会被带曩昔。
指令 | 描述 |
---|---|
git stash | 把未提交内容躲藏起来,包括未暂存、已暂存。 等今后康复现场后继续工作 |
git stash list | 检查一切被躲藏的内容列表 |
git stash pop | 康复被躲藏的内容,一起删去躲藏记载 |
git stash save “message” | 同git stash ,能够备注阐明message
|
git stash apply | 康复被躲藏的文件,但是躲藏记载不删去 |
git stash drop | 删去躲藏记载 |
当然这里先提交到本地也是能够的,只是提交不是一个完好的功用代码,而是残缺的一部分,影响也不大。
拣选提交cherry-pick
当有一个紧迫bug,在dev
上修正完,咱们需求把dev
上的这个bug修正所做的修正“仿制”到master
分支,但不想把整个dev兼并曩昔。为了便利操作,Git专门供给了一个cherry-pick
命令,让咱们能仿制一个特定的提交到当时分支,而不管这个提交在哪个分支。
如上图,操作进程相当于将该提交导出为补丁文件,然后在当时HEAD
上重放,形成不管内容仍是提交阐明都一致的提交。
- 期望把
dev
分支上的v7
提交的内容兼并到master
,但不需求其他的内容。 - 在
master
分支上执行指令git cherry-pick v7
,会产生一个新的v7'
提交,内容和v7
相同。 - 一起更新
master
、HEAD
,以及工作区。
# 选择一个commit,兼并进当时分支
$ git cherry-pick [commit]
参考资料
- 博客园 | 深入浅出Git教程
- 山公都能懂的GIT入门
- 廖雪峰的GIT教程
- 电子书《ProGit-Git教程》
- Gitee码云的 Git 大全,真的挺全
- 敏捷进程实践-git代码分支办理标准
- 易百教程-Git教程?
- 在线Git学习+练习
- GUI Clients Git网站上的GUI东西列表
- Git常用指令集合
️版权声明:版权一切@安木夕,本文内容仅供学习,欢迎指正、沟通,转载请注明出处!