⑴ 如何將Git子模塊更新為最新的原始提交
Git 1.8.2提供了一個新的選項--remote,可以完全實現這種行為。運行
git submole update --remote --merge
將從每個子模塊的上游獲取最新更改版,並權將其合並,並檢查子模塊的最新版本。正如文件所說:
- 遠程
該選項僅對更新命令有效。使用子模塊的遠程跟蹤分支的狀態,而不是使用超級項目的記錄的SHA-1來更新子模塊。
這相當於git pull在每個子模塊中運行,這通常正是你想要的。
⑵ Git 中submole的使用
面對復雜項目,通常將代碼根據功能拆解為子模塊,主項目依賴子模塊但不關心其內部流程。兩種常見方式管理子模塊:一種是將子模塊文件夾加入到 .gitignore,但需使用者額外准備子模塊版本;另一種是使用 Git 的 submole 功能,通過它建立主項目與子模塊之間的依賴關系,記錄子模塊路徑、遠程倉庫地址、版本號。
實現 submole 功能時,先確保主項目與子模塊項目分別具備各自的遠程倉庫地址。以下步驟演示如何在主項目中添加並管理子模塊。
在主項目中使用 `git submole add` 命令引入子模塊。進入主項目目錄後,執行以下命令,子模塊路徑、遠程倉庫地址與版本號將被記錄。
命令執行後,主項目倉庫中將新增 `.gitmoles` 文件,記錄子模塊信息。同時,在主項目目錄下多出子模塊文件夾。若已有 `.gitmoles` 文件,內容會相應更新。此外,在主項目的 `.git/config` 文件中和 `.git/moles` 目錄下也會有對應信息的增加。
執行 `git commit -m "add submole xxx"` 提交,主項目中將顯示子模塊文件夾,並帶上子模塊的版本號。
創建子模塊過程中,子模塊代碼已自動克隆到指定路徑。若後續使用者僅克隆主項目,子模塊代碼不會自動拉取。可使用 `git clone --recurse-submoles` 克隆主項目,確保子模塊代碼同步。
使用 `git submole update` 後,主項目目錄下的子模塊文件夾將包含最新子模塊代碼。或在主項目目錄中執行 `git submole update --remote`,以確保子模塊與遠程倉庫同步。
子模塊代碼需定期更新。通過 `git submole update --remote` 命令,子模塊將根據遠程倉庫版本進行更新。
刪除 submole 時,應使用官方推薦的命令 `git submole deinit`。若子模塊工作區有本地修改,使用 `--force` 參數可移除這些修改。
Git submole 功能為管理復雜項目中的子模塊提供了便利。通過 submole 功能,主項目與子模塊之間建立了依賴關系,記錄子模塊信息,實現獨立版本控制。遵循正確流程操作 submole,能有效管理項目結構與版本。