這次不造輪子,寫寫文章。
最近想把自己的 blog 整理到 github 上,但由於其中依賴了一些主題以及外掛,這時候 git submodule 就能很好的處理這種情況了。
submodule 是什麼?
submodule 顧名思義,子模組。在一個專案依賴其他 git 上的模組時就很有用處了。
以我自己這次修改做例子:
我的 typecho 部落格 依賴了 主題 typecho_material_theme 和 外掛 Links_for_Material_Theme
那寫下來就寫寫整個過程。
凍手不?凍手
準備
- 已有一個 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 的
可以看到多了兩個不一樣的圖示,點選自動跳轉去該倉庫的地址(@ 後面代表的是 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
你還可以把上圖的 Let's party
拖到書籤欄,然後訪問你想要搖的網站,點選剛儲存的書籤進行搖一下。
PS:上面所述為實操後憑記憶記下來的,如有遺漏歡迎補充