Introduction
原本為方便將網頁與結構設計以及文章合併作為一個 Github 儲存庫(Repository)管理。但是在撰寫文章內容時發現兩個部份的提交(Commit),在回頭管理時要花比較多的時間檢視。
因此,改為使用 git 的 submodule 功能,將兩個部分分開管理。同時可以將文章部分單獨於一個儲存庫開放取用,供未來有人提供改善建議。
使用此紀錄操作流程,避免自己忘記。
操作流程
- 先在目標位置(如 Github)建立一個子儲存庫。
- 複製原本的母儲存庫並切換至該目錄:
git clone <母儲存庫位址> <母儲存庫放置資料夾> cd <母儲存庫放置資料夾> - 刪除母儲存庫之 origin remote:
git remote rm origin - 僅留下母儲存庫中,要放在子儲存庫中之資料夾:
git filter-branch --subdirectory-filter <子儲存庫要的資料夾> -- --all - 僅查內容無誤後,重新添加子儲存庫之 origin remote 並推送:
git remote add origin <子儲存庫位址> git push - 檢查子儲存庫內容無誤後,刪除母儲存庫中要使用子儲存庫替代的地方(前面的
<子儲存庫要的資料夾>):git rm -r <要使用子儲存庫取代的資料夾> - 使用 git submodule 將子儲存庫附加於母儲存庫之相應位置:
git submodule add <子儲存庫位址(Url)> <要使用子儲存庫取代的資料夾> - 檢查能順利執行後進行提交與推送:
git commit git push
References
- Puck Wang. (2020). Git 進階應用 Submodule 與 Subtree,使用它們來拆分專案. https://blog.puckwang.com/posts/2020/git-submodule-vs-subtree/