开启生长之旅!这是我参与「日新计划 12 月更文应战」的第36天,点击检查活动概况

作中的Git实践

Git flow

Git flow(Git工作流程)是指软件项目中的一种Git分支办理模型,经过了很多的实践和优化,被认为是现代敏捷软件开发和DevOps(开发、技能运营和质量保证三者的交集)的最佳实践。Git flow主要流程及关键分支:原图地址-processon

Git入门图文教程⑨-一些Git实践

✅主分支:master,安稳版别代码分支,对外能够随时编译发布的分支,不允许直接Push代码,只能请求兼并(pull request),且只承受hotfixrelease分支的代码兼并。

✅热修正分支:hotfix,针对线上紧迫问题、bug修正的代码分支,修正完后兼并到主分支、开发分支。

  • ① 切换到hotfix分支,从master更新代码;
  • ② 修正bug;
  • ③ 兼并代码到dev分支,在本地Git中操作即可;
  • ④ 兼并代码到master分支。

Git入门图文教程⑨-一些Git实践

✅发版分支:release,版别发布分支,用于迭代版别发布。迭代开发完成后,兼并dev代码到release,在release分支上编译发布版别,以及修正bug(定时同步bug修正到dev分支)。测试完成后此版别能够作为发版使用,然后把安稳的代码push到master分支,并打上版别标签。

✅开发分支:dev,开发版别分支,针对迭代使命开发的分支,日常开发原则上都在此分支上面,迭代完成后兼并到release分支,开发、发版两不误。

Git入门图文教程⑨-一些Git实践

✅其他开发分支: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命令,让咱们能仿制一个特定的提交到当时分支,而不管这个提交在哪个分支。

Git入门图文教程⑨-一些Git实践

如上图,操作进程相当于将该提交导出为补丁文件,然后在当时HEAD上重放,形成不管内容仍是提交阐明都一致的提交。

  • 期望把dev分支上的v7提交的内容兼并到master,但不需求其他的内容。
  • master分支上执行指令git cherry-pick v7,会产生一个新的v7'提交,内容和v7相同。
  • 一起更新masterHEAD,以及工作区。
# 选择一个commit,兼并进当时分支
$ git cherry-pick [commit]

参考资料

  • 博客园 | 深入浅出Git教程
  • 山公都能懂的GIT入门
  • 廖雪峰的GIT教程
  • 电子书《ProGit-Git教程》
  • Gitee码云的 Git 大全,真的挺全
  • 敏捷进程实践-git代码分支办理标准
  • 易百教程-Git教程?
  • 在线Git学习+练习
  • GUI Clients Git网站上的GUI东西列表
  • Git常用指令集合

️版权声明:版权一切@安木夕,本文内容仅供学习,欢迎指正、沟通,转载请注明出处!