其實找不太到用 git submodule 的場合,直到 AI 登場後,這個需求對我而言就比較容易浮出檯面
git submodule 指的是你在自己的 repo 底下,又需要新增一個別人的 repo 進來管理
但這個功能很少人在用的原因是
一般 .net 而言,想用網路上的 library,通常我們會用 public nuget 裝起來用就好
又或者是自己內部的 library,也可以建立自己私人的 nuget server 管理即可
然而有一個場景是由 AI 所帶來的,也許這種場景會是適合用 git submodule
越來越多的第三方服務,會將他們的文件 AI 化,並丟至 git 上面讓你抓下來使用
由第三方自己產生的文件,絕對是最準的,這個想法相當的有趣,比方說是綠界的 API 文件
對綠界而言,他們只要不斷地去更新這個 repo 即可
對串接方而言,這個文件改的幅度不大,這樣的方式不僅團隊可以受益,而且上手也會比較快
怎麼做
在你的目前 repo 底下執行這樣的指令即可
git submodule add -b master https://github.com/ECPay/ECPay-API-Skill.git .ecpay-skill
可以發現它會幫你產生兩個檔案,一個是 gitmodules,為了指定 remote url,另一個則是指到目前的 commit id,這可以幫你省下去對方的 repo 那邊下載成千上萬個檔案

優點
- 你不需要去 commit 那一堆檔案
- 如果對方有更新檔案的話,你得再去手動重抓再回來覆蓋可以
- 透過指令直接更新到最新
git submodule update又或者是針對整個 repo 跟 submodules 更新
git pull --recurse-submodules缺點
- 開發者需要具備有 sub modules 的知識門檻 (用過 git submodule的人不算多)
- 如果今天引入的開發者在最新的節點,但後續發現有更新的話,開發者自行更新後,即便 commit 進 git,其他開發者仍然還是在舊的 commit 上,裡面的檔案還是舊的
- 團隊需要每個人都要手動更新 (不如 nuget 來的方便,只要有人改版本號,大家 pull 下來就直接更新了)
參考文件: