小白入职必会面试点!分享面试问题,第一篇《说一下 Git 工作流?》

131 阅读4分钟

问:你用过的远端工具用有哪些,流程是怎么样的?

常见的三个,Gitlab(公司都用这个)、GiteeGithub...

一般项目划分三个分支,分别是 master(主分支,上线的时候用的);release(测试分支);develop(开发分支,一般开发的时候,每一个开发人员会基于此分支创建自己的功能分支,在自己功能分支上写代码,写完之后再合并到 develop 开发分支);feature/news(自己的功能分支,自己写代码的地方)。

1、项目经理。
  • git init 项目初始化

  • git remote add origin 远端仓库地址

  • git remote -v # 查看关联的远端仓库地址

  • git add . 代码推送到暂存区

  • git commit -m 'init' 提交代码

  • git push -u origin master # 加 -u 的目的是,下一次推送的时候直接可以 git push,简单!

  • git checkout -b release # 创建 release 分支并切换

  • git push -u origin release # 推 release 分支到远端

  • git checkout -b develop # 创建 develop 分支并切换

  • git push -u origin develop # 推 develop 分支到远端

2、组员操作(你的操作)。

你到公司之后,你的老大会给你一个 Gitlab 的账号和邮箱,需要先设置一下。

  • git config --global user.name 给你的用户名

  • git config --global user.email 给你的邮箱

  • git clone 你的老大给你的仓库地址 # 默认克隆的只有一个 master 分支

  • git checkout release # 本地有 release 会直接切换,本地没有会把远端的 release 拉过来并切换

  • git checkout develop

假设你的老大给你布置了一个用户模块让你去做

  • 首先包装自己处于 develop,创建一个功能分支,命令如下
  • git checkout -b feature/user
    写代码,写呀写~~~
  • git add .
  • git commit -m 'feat: 用户列表'
  • git checkout develop
  • git pull # merge 之前建议先 pull 一下,因为此时可能有同事提交代码了
  • git merge feature/user # 合并自己功能分支的代码到 develop

假如后续老大又布置了新模块,重复上面的步骤即可

  • git checkout -b feature/sports
    写呀写...
  • git add .
  • git commit -m 'feat: 运动列表'
  • git checkout develop
  • git pull
  • git merge feature/sports
  • // ...
3、release 和 master 分支,项目经理是怎么操作的?

测试:自测(开发人员自己测试,到处点一点确保问题不大);一般公司会有专门的测试人员去测试;

  • git checkout develop # 处于 develop
  • git pull
  • git checkout release # 处于 release,去合并 develop 的代码
  • git merge develop

有的公司有自动化的测试流程,只需要把代码提交到对应的分支(例如 release),测试那边可以自动拉取 release 的代码,自动打包成新的页面,测试人员直接测试

你的老大,把 release 的分支的代码打包之后交个测试人员测试,或者你老大把打包之后的 release 代码手动部署后给测试人员一个地址,他们测试

测试人员测出 Bug,一般会通过专门的工具(禅道)给你提 Bug,你这边会收到通知,根据 Bug 的优先级去修复即可,修复完毕之后要回到禅道标记一下这个 Bug 已修复,测试人员那边也会收到通知会进行复测,确认没有问题会关闭这个 Bug

如果出现 Bug 了,是直接再 release 上面改吗?不是!一般我们会再开一个专门的处理 Bug 的分支

  • git checkout -b hotfix/news #假如这个分支为news分支

修 Bug ...

如果说你有 release 的权限,你可以把自己的 Bug 分支合并到 release,并推送到远端

如果说你没有 release 的权限,你应该把自己的 Bug 分支推送到远端,并通知老大去合并代码

假如 Bug 都修复完了,你的老大做如下操作

  • git checkout master
  • git merge release # 把 release 合并到 master

上线

有的公司有自动化的上线的流程,你不用管,会自动打包部署 master 的代码到远端

你的老大手动打包 master 的代码,打包成 dist,交给运维/后端,他们负责把代码部署到 Nginx

插一个知识点,了解迭代周期:公司开发项目,假如这个项目开发周期 3 个月(还会分好多个迭代,大部分公司一般半个月迭代一次)。

4、代码写了一半,老大告诉我其他分支有一个紧急的 Bug 有修复,怎么办?

处于自己的功能分支

  • git stash # 暂存一下代码

去其他分支修 Bug

干完之后回到自己的功能分支

  • git stash apply # 应用曾经的暂存