mgit2.0.2
07 / 07

實用配方

每一段都可以直接貼進終端機,也可以在試用場先跑一次。

每天早上

mgit --list

先確認今天會動到哪些目錄。

mgit

每個 repo 的狀態一次看完。

mgit pull

全部更新;失敗的會列在摘要裡。

在試用場跑一次: mgit pull

只想看有變更的

git 的 status --porcelain 在乾淨時沒有輸出,所以搭配 -q 就只會剩下有變更的 repo 的行:

mgit -q status --porcelain

想連是哪一個 repo 都看到,就不要加 -q:乾淨的儲存庫只會留下一個標題與空行。

批次切分支

mgit branch --show-current

先看每個 repo 現在在哪一條分支上。

mgit checkout main

全部切回 main;切不過去的(例如分支不存在)會出現在摘要裡。

在試用場跑一次: mgit branch --show-current

找出落後的

mgit fetch --all --prune

先更新遠端資訊,這一步不會動到工作目錄。

mgit -q log --oneline -n 1

再看每個 repo 的最新一筆。

工作目錄有兩層

如果你的 repo 分在 work/team-a/*work/team-b/* 底下,加大層數就好:

mgit --depth 2 --summary

在有第二層的目錄裡試: mgit --depth 2 --summary

什麼時候不要用 mgit

  • 精確鎖定每個相依的版本:那是 git submodule 的工作。
  • 單一 CI 與單一發佈流程:那是 monorepo 的問題,不是多 repo 的問題。
  • 要跨 repo 的原子提交:mgit 只是把同一個指令送到每個目錄,它不提供交易語意。

mgit 不會在你的 repo 裡放任何檔案,也不改變 repo 之間的關係。它只做一件事:把同一個指令送到每一個儲存庫,然後把結果彙總成一個結束代碼。