07 / 07
實用配方
每一段都可以直接貼進終端機,也可以在試用場先跑一次。
每天早上
mgit --list先確認今天會動到哪些目錄。
mgit每個 repo 的狀態一次看完。
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 之間的關係。它只做一件事:把同一個指令送到每一個儲存庫,然後把結果彙總成一個結束代碼。