當你的項目裏依賴與一個第三方模塊,或者一個子項目,而你須要保持這個模塊的更新,確保使用這個子模塊的全部項目都能同步到,若是拷貝的話就達不到這個目的,總之一句話就是在一個庫裏能夠包含多個子庫,而且主庫和子庫是隔離的,互不影響.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
而後提交此次的改動3d
git commit -am "added submoudle let's go"
複製代碼
推送到遠程倉庫code
git push -u origin master(因爲是第一次入庫須要設置下默認上游)
複製代碼
而後咱們修改下子庫,提交cdn
git commit -am "修改子模塊可是並不提交子模塊的修改"
複製代碼
會發現 git 提示咱們有修改blog
若是咱們嘗試推送到遠程庫,會發現並無在子模塊的修改並未在主模塊生效,由於咱們沒有在子模塊推送此次修改文檔
而後咱們新建一個目錄,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
複製代碼
以上只是子模塊最簡單的一些使用,想要了解的更新,請移步官方文檔