git submodule,submodule
使用這個的前提:
1.工程依賴不太大,比較簡單,5個以內吧(比較大了還是用android 的 repo吧)
2.注意submodule的提交需要在它的目錄下執行
3.注意 git submodule update
4.迴圈執行可以使用git submodule foreach git submodule update
主要應用與 使用了別人的庫,不需要自己維護
總之就是簡單,但是不可過度依賴,依賴各種子模組用repo吧,安卓上那麼多工程依然運行完美
開始
建立
git submodule add helloworld.git
git commit -m "Add submodules helloworld.git"
其他人協同
git clone /path/to/repos/helloworld_parent.gitgit submodule initgit submodule update
或者
git clone --recursive /path/to/repos/foo.git
移除
1.刪除git cache和物理檔案夾
2.刪除.gitmodules的內容(或者整個檔案) 因為本例只有兩個子模組,直接刪除檔案
3.刪除.git/config的submodule配置 源檔案
4.提交更改
git user's manual for submodule
怎把一個工程中的某個目錄添加為git submodule
git 的 submodule 方式不會向倉庫添加實際的的內容的,只會通過 .gitmodules 檔案保留相應的子模組的雜湊值。由於你要真正要用的代碼處於一個子目錄中,我的方案是你先把這個子目錄提取成一個單獨的倉庫(可以使用git-subtree.sh這個指令碼),然後再添加這個倉庫為 submodule(或者直接使用 git-subtree.sh 把實際的代碼整合到你的項目,這樣別人複製就不需要更新 submodule 了)。這樣做的缺點就是每當上遊有更新,就需要對 submodule 的倉庫做相應更新。另外:git-subtree.sh 已經合并入 git 了,可能並不在 PATH 中,不能直接執行,不過應該在 git 的安裝中的。另一個思路:建立 bundles 目錄,添加原倉庫為 submodule 到此,然後對需要的子目錄做相對路徑軟連結,git 能夠正確處理軟連結。這可能是比較好的一個辦法了,不需要額外維護同上遊的同步。-----------你在子模組目錄中進行的已經是 git-subree.sh 的 split 操作了,這個時候該倉庫已經和 orgin 完全不同了,等於重建立立了以該 subdirectory 為根的一個倉庫,這個倉庫中的對象只在你的本地,並不包含在 origin 的倉庫中,所以最後才會無效的。
對於git的問題
1 從github.com:googledrive/dredit.git 下載一個 git 倉庫 ,倉庫名字是 dredit, 進入到該倉庫
2 初始化一個子模組
3 更新該子模組,--recursive 遞迴地
如果要在window下使用git ,需要安裝msysgit, code.google.com/p/msysgit/