HOWTO · Git
Git 中列出子模組
本文將討論 Git 子模組是如何工作的。
在本文中,我們將討論 Git 子模組。我們將介紹它們是什麼、子模組的用途和一般工作流程。
Git 子模組使我們可以將一個 repo 保留為另一個 repo 的子目錄。簡而言之,子模組是在特定時間範圍內對其他儲存庫的引用。
什麼是 Git 子模組
如果上面的解釋沒有把事情弄清楚,這個應該。
Git 子模組可以比作主機儲存庫中的一條記錄,它引用另一個儲存庫中的提交。通常,子模組是靜態的並跟蹤指定的提交。
它們不跟蹤分支或引用,並且在將更改推送到主機儲存庫時不會更新。
每次我們在 repo 中建立子模組時,Git 都會建立一個 .gitmodules 檔案。該檔案包含子模組的後設資料和與我們的 repo 的對映。
建立多個子模組將導致多個 gitmodules 檔案。
建立一個 Git 子模組
我們必須問自己的第一個問題是什麼時候應該建立一個子模組?
以下是一些最好建立 Git 子模組的場景。
- 當子專案或外部元件快速變化時,最好將你的程式碼鎖定到特定的提交。如果你預計即將發生的可能會破壞 API 的更改,這同樣適用。
- 將元件作為供應商依賴項進行跟蹤時。當我們不定期更新特定元件時,通常會發生這種情況。
- 當我們想在特定時間整合來自第三方的更改時。當你沒有頻繁更新時,它的效果最好。
子模組的通用 Git 命令
讓我們看一下命令列上的一些常見使用選項。
新增 Git 子模組
我們使用 git add submodule 命令在我們的主機儲存庫中建立一個新的子模組。這是建立 Git 子模組時的典型工作流程。
$ git submodule add <Repo URL>
git submodule add 命令需要一個指向 repo 的 URL 引數。Git 將克隆子模組,我們可以執行 git status 命令檢視新的 repo 狀態。
讓我們看一個例子。讓我們在我們的 Delftscopetech 儲存庫中新增一個子模組。
我們現在可以執行 git status 命令,如下所示。
$ git status
如上所示,我們現在有兩個新檔案,.gitmodules 和 Learn-Submodules。我們可以新增檔案並提交更改。
git submodule init
我們執行 git submodule init 命令將子模組的對映從 .gitmodules 檔案複製到我們的本地配置檔案中。當我們的儲存庫中有多個子模組時,它就會出現。
在 Git 中列出子模組
git submodule init 命令依賴於 .gitmodules 檔案。我們可以通過依賴同一個檔案來檢視所有子模組的列表。
首先,我們需要解析檔案。我們跑:
$ git config --file .gitmodules --name-only --get-regexp path
然後我們可以執行:
$ git config --file .gitmodules --get-regexp path | awk '{ print $2 }'
上面的命令將顯示儲存庫中存在的子模組的路徑。