開發(fā)過程中經(jīng)常用到的Git操作在這篇博客Git常用命令大集合有介紹,但是沒有涉及到submodule的命令津辩,這也是比較常用的命令,這篇博客就介紹下git submodule的用法.
開發(fā)過程中,經(jīng)常會有一些通用的部分希望抽取出來做成一個公共庫來提供給別的工程來使用蹲姐,而公共代碼庫的版本管理是個麻煩的事情。而且一旦更新了就要同步到多個引用的系統(tǒng)中人柿,這個時候使用git submodule柴墩,然后執(zhí)行: git submodule update就全部搞定了。
下面就以Android開發(fā)為例凫岖,講述下submodule的具體用法江咳。
假設(shè)一個Android Demo的目錄是這樣的:app, extras。其中app是程序的主要目錄哥放,extras目錄是引用的一些library歼指, 比如程序中引用了volley的library.
添加
為當前工程添加submodule,命令如下:
git submodule add 倉庫地址路徑即
git submodule add https://android.googlesource.com/platform/frameworks/volleyextras
命令執(zhí)行完成甥雕,會在當前工程根路徑下生成一個名為".gitmodules"的文件踩身,其中記錄了子模塊的信息。添加完成以后社露,再將子模塊所在的文件夾添加到工程中即可挟阻。
更新
如果過了一段時間volley庫有更新,這時候我們的app也需要更新峭弟,命令如下:
git submodule update
git submodule foreach git pull\
git submodule foreach --recursive git submodule init\
git submodule foreach --recursive git submodule update
==
刪除
1.刪除.gitsubmodule中對應(yīng)submodule的條目
2.刪除.git/config 中對應(yīng)submodule的條目
3.執(zhí)行git rm --cached {submodule_path}附鸽。注意,路徑不要加后面的"/"瞒瘸。例如:你的submodule保存在 supports/libs/websocket/ 目錄坷备。執(zhí)行命令為:**git **rm --cached supports/libs/websocket
4. 刪除對應(yīng)的目錄: rm -rf supports/libs/websocket
更新URL
1.更新 .gitsubmodule中對應(yīng)submodule的條目URL
2.更新.git/config 中對應(yīng)submodule的條目的URL
3.執(zhí)行**git ****submodule **sync
下載的工程帶有submodule
當使用git clone下來的工程中帶有submodule時,初始的時候情臭,submodule的內(nèi)容并不會自動下載下來的省撑,此時,只需執(zhí)行如下命令:
git submodule update --init --recursive
即可將子模塊內(nèi)容下載下來后工程才不會缺少相應(yīng)的文件俯在。