Git submodule 的筆記

HanSon發表於2017-04-14

這次不造輪子,寫寫文章。

Git submodule 的筆記
file

最近想把自己的 blog 整理到 github 上,但由於其中依賴了一些主題以及外掛,這時候 git submodule 就能很好的處理這種情況了。

submodule 是什麼?

submodule 顧名思義,子模組。在一個專案依賴其他 git 上的模組時就很有用處了。

以我自己這次修改做例子:
我的 typecho 部落格 依賴了 主題 typecho_material_theme外掛 Links_for_Material_Theme

那寫下來就寫寫整個過程。

凍手不?凍手
Git submodule 的筆記
file

準備

  • 已有一個 typecho 專案,可以從 github 上 fork 一個 github.com/typecho/typ…
  • 對應的一個 github 倉庫,如 github.com/HanSon/my-b…
  • 記得把 .gitignore 中的 /usr/theme/usr/plugins 相關路徑去掉(在最底部的4行)

動手

開始增加子模組(最後為路徑)

cd typecho
git submodule add git@github.com:HanSon/typecho_material_theme.git usr/theme/typecho_material_theme
git submodule add git@github.com:HanSon/Links_for_Material_Theme.git usr/theme/Links複製程式碼

這時候應該能看到開始對兩個庫 clone 中,檢視一下 git status , 應該能看到修改的有多了兩個庫,以及 .gitmodules 的修改

git status複製程式碼

然後我們來提交到 github 中

git commit -am "增加子模組"
git push origin master複製程式碼

這時就已經成功提交到 github 上了,我們來看看 github 上是如何顯示 submodule 的

Git submodule 的筆記
file

可以看到多了兩個不一樣的圖示,點選自動跳轉去該倉庫的地址(@ 後面代表的是 commit id)

來 pull

git clone https://github.com/HanSon/my-blog.git
cd my-blog複製程式碼

pull 完發現只剩下資料夾,submodule 並沒有內容,需要先初始化 submodule 並且 update

git submodule init
git submodule update複製程式碼

這時候就發現 submodule 的內容已經 pull 下來了!

如果更新了 submodule , project 應該如何跟著更新?

  • 按需更新。 去到相對應的 submodule 目錄執行 git pull origin master 即可。

  • 簡單粗暴,全部更新。git submodule foreach git pull origin master

這次給我的部落格加上了播放哈林搖的功能 hanc.cc

Git submodule 的筆記
file

你還可以把上圖的 Let's party 拖到書籤欄,然後訪問你想要搖的網站,點選剛儲存的書籤進行搖一下。

Git submodule 的筆記
file

PS:上面所述為實操後憑記憶記下來的,如有遺漏歡迎補充

Git submodule 的筆記
file

相關文章