Vue工程使用git添加submodule公共庫的項目實踐

Vue工程使用git添加submodule公共庫的項目實踐

  • Vue的使用,一直在路上!

  • Git的使用,一直在路上!

  • Git submodule的使用,開始並將一直使用!(旨在解決多工程使用公共庫代碼的方式,且不必每個客戶端都包含該庫,亦可保持公共庫代碼提交的獨立性。)

一、 說明

  1. 假設submodule公共庫的gitlab地址:ssh://git@y:8080/submodule.git,且submodule公共庫已有公共代碼內容,此公共庫和項目工程代碼提交保持一致。
  2. 添加submodule公共庫均爲全量添加,即增加公共庫後submodule的內容會全部存在而非部分存在。
  3. 若在已有工程引入公共庫,且項目工程已包含公共庫內容,建議在使用公共庫前將項目工程內容和公共庫內容進行對比,以免更改後引入的無效或丟失項目工程內容。且建議:如非必要,儘量修改項目工程代碼。
  4. 若項目工程某功能分支已有多人在開發,建議管理人員統一引入submodulle公共庫後,各開發人員在clone已有submodule公共庫的代碼後再進行開發。(引入submodule公共庫所花費時間不長)
  5. 建議submodule公共庫和項目工程各分支名稱儘量保持一致,且對應關係一致。
  6. 以下內容涉及到submodule公共庫均簡稱公共庫。

二、 已有項目庫添加公共庫(以dev分支爲例)

  1. 添加公共庫(溫馨提示:修改之前請先覈對內容,確保不影響之前的內容及引用)

git submodule add -b dev ssh://git[@y](https://my.oschina.net/yyyy):8080/submodule.git src/components/lib

  1. git status查看改動

添加了.gitmodules文件和子模塊目錄文件。

  1. 將子模塊切換到dev分支

git submodule foreach git checkout dev

  1. 初始化並拉取遠端公共庫dev分支代碼

git submodule update --init

  1. 查看本地是否已經成功獲取公共代碼

cd src/components/lib

ls

  1. 項目工程有使用到公共庫代碼的地方,修改項目工程公共代碼的引用路徑,並刪除源文件。
  2. 啓動項目工程,測試是否可以正常運行。

npm run dev

  1. 提交改動

git add .

git commit -m ‘add submodule’

git push origin dev:dev

三、克隆已有公共庫的前端工程(以dev分支爲例)

1、克隆工程

git clone -b dev ssh://git[@y](https://my.oschina.net/yyyy):8080/project.git

  1. 初始化並下載子模塊

cd project

git submodule foreach git checkout dev

git submodule update --init --recursive

  1. 上述命令也可以合併爲以下命令

git clone --recurse-submodules git clone -b dev ssh://git[@y](https://my.oschina.net/yyyy):8080/project.git

  1. 啓動工程驗證

npm run dev

四、項目庫上獲取公共庫的修改(以dev分支爲例)

  1. 子模塊切換到正確分支

git submodule foreach git checkout dev

  1. 拉取公共庫代碼

git submodule update --remote --merge

  1. 查看狀態並提交更改

git status

git add .

git commit -m ‘change submodule commit id’

git push origin dev:dev

五、刪除公共庫

  1. 刪除項目庫根目錄/.gitmodules中對應的條目
  2. 刪除項目庫根目錄/.git/config中有關submodule對應的條目
  3. 刪除項目庫根目錄/.git/modules目錄下對應的submodule文件夾目錄
  4. 執行git rm --cached [modulename]命令,如本例中的git rm --cache src/components/lib
  5. 刪除submodule文件夾內容

六、使用公共庫的技巧

  1. 設置別名

git config alias.sdiff ‘!’”git diff && git submodule foreach ‘git diff’”

git config alias.spush ‘push --recurse-submodules=on-demand’

git config alias.supdate ‘submodule update --remote --merge’

  1. 常見問題

A. 問題:從有子模塊的分支切換到沒有子模塊的分支時,會帶過去一個未跟蹤的子模塊目錄

解決方式:刪除該目錄即可。

B. 問題:從無子模塊的分支切換回有子模塊的分支,子模塊目錄內容沒有了。

解決方式:git submodule update --init 重新填充。

C. 若更改過.gitmodules文件中的URL內容,項目庫執行git submodule update或git pull --recurese-submodules會失敗。

解決方式: git submodule sync --recursive  //將新的URL複製到本地配置中

   git submodule update --init --recursive //從新URL更新子模塊

七、官方文檔請戳 git submodule子模塊

小夥伴們,git submodule還在一直使用中,如有建議或疑問下方留言!希望能爲小白的你提供一點思路。加油!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章