git使用|git在项目管理中的最佳实践

【git使用|git在项目管理中的最佳实践】
git在项目管理中的最佳实践

  • 前言
  • 现状
  • 解决方案
  • 代码示例
  • 界面操作
  • 总结

前言 用Git 来管理代码版本已经成为主流,但是在多分支、多需求及多版本开发的问题还是一直有,现在整理一下业界比较常规的做法,以减少上线版本出错的风险。好了,Git 的有哪些好处就不多说了,如果不了解 Git 的话,建议去官网先去了解一下。官网地址,后续出一系列 Git 操作相关的博客。
现状 当团队达到一定人数之后,需求开发增加,每个人负责的功能也不一样,上线时间也不一样,但是有可能是在一个项目中开发。当前采取的都在 develop 分支上开发,如果有紧急的需求,会拉一个 hotfix/xxx 分支,然后开发、测试、上线。平常开发都在 develop 分支上开发这样做很容易引起问题,小程A 在开发 H 算法功能,阿B 在开发 查询ES功能,都在同一个项目上,小程A 功能20号需要上线,阿B 的功能需要在25号上线,两人都是在18号接到的功能。那么问题就来了,两人同时开发,阿B 的功能可能会影响到 小程A 的功能,下面就来看看这种情况的解决方式。
解决方案 Git Flow 就像代码需要代码规范,代码管理同样也需要规范,而且需要一个清晰和流程和规范。这正是 Git Flow 需要要解决的问题,Git Flow 常用的分支有:
  1. master分支:这是最近发布到生产的分支,这个分支的代码只能从其它分支合并,不能在这个分支上直接修改。
  2. develop 分支:这是主开发分支,包含所有要发布的 release 分支的代码,这个分支主要合并其它分支,比如上线完后的 release、转测的 feature 分支。
  3. feature 分支:这个分支主要用来开发新功能,开发完成后,把这个分支合并到 develop 分支,并新建一个 release 分支去测试。
  4. release 分支:当新功能开发完成,需要测试时,新建一个 release 分支去测试、修改BUG(这个分支建好后,就不要再从 develop 分支去合并新代码了)。上线后,把 release 分支合并到 develop、master 分支上去,master 分支需要打tag。
  5. hotfix 分支:当发现生产有 BUG 时,我们需要基于 master 分支,新建一个 hotfix 分支,上线后需要把 hotfix 分支合并到 develop、master 分支,master 分支需要打tag。
代码示例
  1. 创建 develop 分支:
    git branch develop
    git push origin develop
  2. 创建 feature 分支:
    git checkout develop
    git checkout -b feature/20210520
    git push origin feature/20210520
    完成功能后
    git checkout develop
    git merge feature/20210520
    git branch -d feature/20210520
    git push origin --delete feature/20210520
  3. 创建 release 分支:
    git checkout develop
    git checkout -b release-0.0.1
    git push origin release-0.0.1
    测试完上线后
    git checkout master
    git merge release-0.0.1
    git tag V0.0.1
    git push
    git push origin V0.0.1
    git checkout develop
    git merge release-0.0.1
    git push
    git branch -d release-0.0.1
    git push origin --delete release-0.0.1
  4. 创建 hotfix 分支
    git checkout master
    git checkout -b hotfix/20210520
    完成并上线后
    git checkout master
    git merge hotfix/20210520
    git tag V0.0.2
    git push
    git push origin V0.0.2
    git checkout develop
    git merge hotfix/20210520
    git push
    git branch -d hotfix/20210520
    git push origin --delete hotfix/20210520
界面操作 我这里用一个新建的项目来操作,现在只有一个 master,下面我就用 sourceTree 来演示一下 git flow 操作流程。
  1. 点击 Git 工作流,然后会出来下面的界面
    git使用|git在项目管理中的最佳实践
    文章图片

  2. 点确定,然后开始初始化,点击显示完整输出可以看它执行了哪些命令,这个可能要等待一段时间。
    git使用|git在项目管理中的最佳实践
    文章图片

  3. 完成后会出现下图,如果没有 develop 分支,自动把 develop 分支建好,然后转到 develop 分支去。
    git使用|git在项目管理中的最佳实践
    文章图片

    当然如果远程没有 develop 分支,要先把这个远程分支推送到远程
    git使用|git在项目管理中的最佳实践
    文章图片

    git使用|git在项目管理中的最佳实践
    文章图片

  4. 现在如果要开发一个新功能,先点击图1 Git 工作流按钮,然后出现下图,再点击 “其它操作”,选 “建立新的功能”。然后填功能名称,这时候就会从 develop 分支拉取一个分支到 feature 分支(这个名称自己填的),点确定就行了。
git使用|git在项目管理中的最佳实践
文章图片

git使用|git在项目管理中的最佳实践
文章图片

5. 分支建成功后,就会出现 20210528 分支(如果这个分支只有自己开发,可以不用上传到远端)。这里就不放图了,如果功能开发完成后,基于 20210528 这个开发分支点完成功能,这会把当前分支合并到 develop 分支。合并完成后,点 “建立新的发布版本”,会再出来一个 release 分支,这个分支就是拿到测试环境去测试的分支。如果有 BUG 就在这个分支上修改,修改完成上线后,在这个分支上点完成功能,合并到 develop、master,然后 master 分支打上版本,这个流程就完成了。
6. 如果有紧急BUG要修改,点击 “新立新的修复补丁”,BUG改完之后,合并到 develop、master,然后 master 再打版本。
总结 上面的命令就是 Git Flow 的流程,如果觉得输入命令麻烦的话,可以用客户端 sourceTree 就支持,不过先把上面的流程了解清楚,界面的使用就很简单了。

    推荐阅读