寫一個批量操作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 操作

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