- Git 产生的背景
- 我公司为什么要使用 Git
- 为什么时候当前的工作流
- 开发(dev/local);
- 集成测试(sit);
- 预发布(staging);
- 生产(production);
- Merge
- Rebase
- 在 GitLab 创建项目(管理员);
- Fork 到自己的开发仓库;
- 管理远程分支;
- 克隆代码到本地;
- 基于主仓库
master
分支创建开发特性分支(feature/hotfix); - 编写代码,本地测试,提交 commit;
- 推送到自己的仓库;
- 通过 MR 方式向主仓库
sit
分支提交代码,使用 rebase 方式。如果存在冲突,需要进行本地合并(参见[线上 Rebase 操作存在冲突的解决流程](#线上 Rebase 操作存在冲突的解决流程)); - 测试(测试人员);
- 如果测试过程中发现问题,修改代码后可以随意提交 commit,推送,合并代码;
- 测试完成后要上线前,使用
rabase -i
整理自己的 commit 记录,只保留有用的信息; - 再次强制推送到自己的开发仓库;
- 通过 MR 方式向主仓库
staging
分支提交代码,使用 rebase 方式; - 测试(测试人员);
- 测试无问题后,通过 MR 方式向主仓库合并代码,上线(管理员);
$ git remote -v # 查看当前的远程分支
$ git remote rename origin upstream # 将当前的主远程仓库重新命名为 upstream
$ git remote add origin <git_addr> # 将自己的开发仓库保存并命名为 origin
$ git remote -v # 可以再看一下当前的远程分支
$ git pull upstream master:feature/something
$ git push origin feature/something
$ git rebase -i HEAD~<num>
<num>
替换成要修改的倒数几个 commit 数量。
- 推送前发现远程
master
分支已经快一步; - 推送到
staging
分支前没有清理提交记录; - 在合并到主仓库的
sit
分支后,本地开发分支非常容易被污染;
- 从主仓库的
sit
分支拉最新的代码; - 使用
cherry-pick
将特性分支的 commit 复制到本地sit
分支; - 将本地
sit
分支推送到主仓库对应的远程分支;
- GitHub 客户端;
- SourceTree;
- WebStorm;
- GitLens;
- Tig;