写一个批量操作git的工具

平时合并代码都是用界面工具 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 有关的功能可以略过,然后阅读“迭代开发”部分即可

前端工程化文章推荐:

基于 node.js 可安装在前端项目内的轻量后台服务器,别让浏览器限制了你的才华

以列表的形式管理前端项目的启动、支持多环境联调

记录在一个迭代中前端涉及的项目信息,支持批量的 git 操作

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章