平时合并代码都是用界面工具 GitHub Desktop,但时间长了后我发现几个显著的问题:
比如把代码和到测试分支后,我有时候会忘记切回到特性分支(在测试环境看一下运行效果啥的),写了半天要提交的时候才发现是测试分支,这导致我每次都会刻意检查下
有时候会忘了哪个环境,测试还是重构测试?涉及了那些项目?分支名都是什么?有时候会有一些临时需求、线上紧急问题,这些东西靠人去记忆还是耗费心力的。
多个项目发版是操作繁琐,切换到主分支,拉取主分支代码。切换到特性分支后;将主分支和到特性分支。切换到测试分支;再将特性分支合到测试分支,在切回到特性分支
基于上述的需求我做了个功能页面,可以记录迭代当中涉及的项目信息,并支持批量的 git 操作。
添加项目
选择项目(可多个)并输入分支名后,点击确定后会执行真实的 git 命令操作,等同于
当前分支就是迭代分支则跳过
不是 master 分支,则执行
git checkout master
拉取远程代码(GithubDesktop 直接创建分支则不会拉取远程分支) 执行
git pull
创建分支 执行
checkout -b ${item.branchName}
推送分支
push --set-upstream origin ${item.branchName}
第一次执行会要求登录
会返回执行结果,因为这些命令不管是成功还是失败都会返回一些信息
实际上添加成功了,但推送到远程失败了,我在公司使用时没这个问题
多个项目则会出现多选框。
执行 git 是发送请求给 node 服务器,借助sf-inner-service。
从主分支拉取
执行 git 命令如下
当前分支不是 master,
checkout master
拉取主分支
pull
切换到特性分支
checkout ${item.branchName}
混合 master
merge master
推送
push
检测冲突
diff --name-only --diff-filter=U"
前端会提示检测冲突,有冲突则可以在 VSCode 打开冲突文件,否则回到迭代分支
合并到
先选择要合并到的分支,这个操作会被记录
执行 git 命令如下
- 切换到要合并的分支
checkout ${branch}
- 拉取当前分支
pull
- 混合特性分支
${item.branchName}
- 推送代码
push
会检测冲突,有冲突则可以在 VSCode 打开文件,没有冲突则可以切换到迭代分支
切换到迭代分支
执行 git 命令如下 checkout ${item.branchName}
注意,如果上一个执行命令执行失败,下一个也不会成功,比如合并代码时候有冲突是无法提交成功的
上述功能在一切正常的情况下体验是最好的,一旦发生问题,还是要借助 git 工具,但对于日常开发,冲突也是不常见的
打标签
记录一下使用的环境
git 仓库地址,https://github.com/xiaodun/sf-notes
体验上述功能要先添加项目,和 sf-mock 有关的功能可以略过,然后阅读“迭代开发”部分即可
前端工程化文章推荐: