如何無縫分拆Git Repo?
最近負責把團隊內的 TFS Git 倉庫搬移到 Gitlab 倉庫,並對特定的倉庫做了一次分拆。
專案開發初期為了圖方便,所有東西通通放到同一倉庫,但是經年累月下來隨著專案迭代、人力發展、花式玩法後逐漸付出各種問題,其主要痛點有以下:
- 存取權限控管:無法達到最小範圍、按需授權等原則、最大限度保護程式碼外洩可能,現有的大鍋飯模式,是無法滿足達成的。
- 空間肥大:會取得很多我不相關的內容,未來CI/CD實作後可能會影響到運作效率。
- 衝突:合併程式碼衝突機率逐步增高,且一旦衝突就要需要花費許多時間去解衝突、甚至不小心蓋掉其他人程式碼。
同時也希望倉庫拆分後能同時保留歷史Commit紀錄,以利後續追查與回溯狀況。
前提
- git 版本要 >= 2.22.0
- 使用前請先安裝
git-filter-repo
套件,安裝過程相當簡易詳請自行參閱安裝指南。
- 建議重新clone一份新的、乾淨的倉庫
開始分拆與執行步驟
Step 1. Clone要拆分的倉庫
Step 2. 將工作目錄切換到Clone回來的倉資料夾
Step 3. 從倉庫中的指定欲保存的Order資料夾名稱,並將該資料夾提升為根目錄
Step 4. 分拆完了!最後觀看與確認分拆結果,無誤後 push 回 Git Repo 上
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
更多相關命令簡介
本文僅針對本次需求介紹所需用到的指令,若需其他指令建議請觀看 git-filter-repo
的說明文件,裡面可以看到有更多指令說明與範例。
本文同步發表於CMoney工程部Blog