Git 子模組(Submodule)
- Git 子模組應用。
- 於 Git 中建制另一個 Git 模組應用。
介紹
當專案引用到第三方套件時,大多都是將該套件下載後整包扔進專案裡。當套件有更新時,又要重複一次複製-扔進專案的動作。
GIt 子模組(Submodule)讓我們可以將套件與專案拆開,此後第三方程式就可以直接更新。
Git Submodule 其實就是巢狀的 Git 結構,也就是你有一個 Repository,裡面還有一個子 Repository,兩個 Repository 參考的是不同的 remote 的情況。
創建
將 Jquery 套件放置專案內。
1 | # git submodule add <模組 url> <放置專案位置> |
我們會看到專案內部被添加了以下兩個檔案。
- .gitmodule: 紀錄所有 submodule 的路徑和 url。
- jquery(資料夾): 紀錄 submodule 的 commit id,進到此資料夾內會看到子模組內容。
將子模組資訊傳上 GIt。
1 | $ git add . |
下載
我們可以在下載專案後,使用指令進行子模組的建置。
1 | # 下載模組 |
也可以利用 --recursive
在專案 clone
時就直接將子模組建置好。
1 | $ git clone --recursive https://github.com/hank7891/GitSubmodle.git |
設定忽略 Submodule 內部的改動
當 jquery 內部有改動的時候,外部的 git status
會出現修改提示。
可以在 .gitmodules 加上設定 ignore = dirty
。修改完記得要提交呦。
更新/升級
切換至子模組下做 GIT 操作,並回到上一層將子模組檔案 git add
,並提交出去即可。
刪除
Git 目前還沒有任何指令可以下指令把 submodule 刪除,故須操作以下步驟:
刪除 submodule 的資料夾
1
$ rm -rf <submodule path>
刪除 .gitmodules 裡面 submodule 設定。
提交更新。
刪除 .git/config 裡面的 xsubmodule 設定。
刪除資料夾 .git/modules/<module name> 。