git submodule,submodule

來源:互聯網
上載者:User

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/
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.