這次不造輪子,寫寫文章。
最近想把自己的 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:上面所述為實操后憑記憶記下來的,如有遺漏歡迎補充