Git 子模塊

Submodule解決了什麼問題

當你的項目裏依賴與一個第三方模塊,或者一個子項目,而你須要保持這個模塊的更新,確保使用這個子模塊的全部項目都能同步到,若是拷貝的話就達不到這個目的,總之一句話就是在一個庫裏能夠包含多個子庫,而且主庫和子庫是隔離的,互不影響.git

如何使用

咱們如今新建一個庫叫 parentgithub

git clone git@github.com:hurryking/parent.git
複製代碼

而後在 parent 下新建一個目錄 childrenbash

cd parent
mkdir children
複製代碼

進入 children 執行ui

cd children
git submodule add git@github.com:hurryking/let-s-go.git
複製代碼

而後在 parent 下就能看到剛纔加的子庫,還有一個 .gitmodules 文件,裏面記錄着子庫的在這個項目的路徑和遠程倉庫的地址spa

gitsubmodule01

而後提交此次的改動3d

git commit -am "added submoudle let's go"
複製代碼

推送到遠程倉庫code

git push -u origin master(因爲是第一次入庫須要設置下默認上游)
複製代碼

而後咱們修改下子庫,提交cdn

git commit -am "修改子模塊可是並不提交子模塊的修改"
複製代碼

會發現 git 提示咱們有修改blog

gitsubmodule02

若是咱們嘗試推送到遠程庫,會發現並無在子模塊的修改並未在主模塊生效,由於咱們沒有在子模塊推送此次修改文檔

而後咱們新建一個目錄,clone 下咱們剛纔的 parent

git clone git@github.com:hurryking/parent.git
複製代碼

會發現 clone 下來的項目中子庫中並無東西,git 並無自動替咱們拉取子庫的代碼

咱們須要執行下面的命令初始化子庫

git submodule init
複製代碼

拉取子庫最新代碼

git submodule update
複製代碼

或者有個更簡單的辦法在 clone 帶recursive參數,會自動拉取全部子模塊的代碼

git clone --recursive git@github.com:hurryking/parent.git
複製代碼

以上只是子模塊最簡單的一些使用,想要了解的更新,請移步官方文檔

相關文章
相關標籤/搜索