Skip to content

Instantly share code, notes, and snippets.

@mehunk
Created October 13, 2019 14:21
Show Gist options
  • Save mehunk/d5c58351f8a69cd6ad8229f53af10531 to your computer and use it in GitHub Desktop.
Save mehunk/d5c58351f8a69cd6ad8229f53af10531 to your computer and use it in GitHub Desktop.
对 Git 和其工作流的简要介绍

Git 工作流分享

前言

背景

  • Git 产生的背景
  • 我公司为什么要使用 Git
  • 为什么时候当前的工作流

Git 简介

项目开发上线流程

阶段

  1. 开发(dev/local);
  2. 集成测试(sit);
  3. 预发布(staging);
  4. 生产(production);

Git 工作流

  • Merge
  • Rebase

Demo 演示

流程概要

  1. 在 GitLab 创建项目(管理员);
  2. Fork 到自己的开发仓库
  3. 管理远程分支
  4. 克隆代码到本地;
  5. 基于主仓库 master 分支创建开发特性分支(feature/hotfix);
  6. 编写代码,本地测试,提交 commit;
  7. 推送到自己的仓库
  8. 通过 MR 方式向主仓库 sit 分支提交代码,使用 rebase 方式。如果存在冲突,需要进行本地合并(参见[线上 Rebase 操作存在冲突的解决流程](#线上 Rebase 操作存在冲突的解决流程));
  9. 测试(测试人员);
  10. 如果测试过程中发现问题,修改代码后可以随意提交 commit,推送,合并代码;
  11. 测试完成后要上线前,使用 rabase -i 整理自己的 commit 记录,只保留有用的信息
  12. 再次强制推送到自己的开发仓库
  13. 通过 MR 方式向主仓库 staging 分支提交代码,使用 rebase 方式;
  14. 测试(测试人员);
  15. 测试无问题后,通过 MR 方式向主仓库合并代码,上线(管理员);

管理远程分支

$ git remote -v # 查看当前的远程分支
$ git remote rename origin upstream # 将当前的主远程仓库重新命名为 upstream
$ git remote add origin <git_addr> # 将自己的开发仓库保存并命名为 origin
$ git remote -v # 可以再看一下当前的远程分支

基于主仓库 master 分支创建开发特性分支

$ git pull upstream master:feature/something

推送到自己的仓库

$ git push origin feature/something

整理 commit 记录

$ git rebase -i HEAD~<num>

<num> 替换成要修改的倒数几个 commit 数量。

容易出现问题的环节

  • 推送前发现远程 master 分支已经快一步;
  • 推送到 staging 分支前没有清理提交记录;
  • 在合并到主仓库的 sit 分支后,本地开发分支非常容易被污染;

线上 Rebase 操作存在冲突的解决流程

  1. 从主仓库的 sit 分支拉最新的代码;
  2. 使用 cherry-pick 将特性分支的 commit 复制到本地 sit 分支;
  3. 将本地 sit 分支推送到主仓库对应的远程分支;

参考资料

辅助工具

Git 客户端

  • GitHub 客户端;
  • SourceTree;

编辑器

  • WebStorm;

插件

  • GitLens;

命令行

  • Tig;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment