利用git submodule实现组件化模块分库
2017-03-14 00:26
351 查看
在開發的過程中我們的項目可能會引用其他的版本庫中的代碼, 例如公司已經累積了一套公用的函式庫, 被多個項目調用; 很顯然地, 不能把公用函式庫的文件直接放到我們開發中的項目中, 這樣不但項目的冗餘, 也增加維護的難度, 無疑是替自己找麻煩.
這時候我們就可以使用Git中submodule功能, 來管理我們的子模版, 在這裡我們配合使用GUI SourceTree(以下就簡稱ST吧), 以下就進入正文囉......
1. 準備工作
首先我們先建立兩個Repository分別叫smMain以及smLibA, 並把它們push到Git Server(ex: github, bitbucket…etc.), 在這裡就不多說了.
bitbucket
smMain: https://bitbucket.org/youngce/smmain
smLabA: https://bitbucket.org/youngce/smliba
2. 加入Submodule
在{path}/smMain中使用git submodule add命令添加submodule
libs/smlibA表示將子模塊clone到{path}/smMain/libs/smlibA路徑下, 成功訊息如下圖,
在smMain資料夾中可以發現多一個libs資料夾了, 在ST也出現了uncommitted changes以及submodules了
接下來Commit再Push就好了.
其實我們可以從上圖的libs/smlibA的檔案內容看出來, 在smMain的repository就只是記錄subproject 的commit id 而已.
3. Submodule更新
當發現smLibA更新時, 如何在smMain也進行更新呢??
首先我先更新一下smLibA,
點擊smMain的Tag, 然後點開Submodules, 在smLaibA上點擊兩下
這時會開啟一個名為smLibA的新Tag, 這個smLibA指的smMain下的smLibA, 接下來就按下Pull做更新了
回到smMain會發現新的uncommitted, libs/smLibA中的subproject commit已經被修改為最新的commit id了
最後別忘了commit+push就完成了.
4. Submodule修改
在開發的過程可能會解決一些子項目的Bug或增加函式, 那如何做這樣的修改並更新到子項目的repository呢??
在這裡, 將由smMain中修改smLibA, 最後再push到真正的smLibA的repository.
就直接由smMain資料夾中對libA.txt做修改吧!! 在修改完後你會發現ST中smMain並沒有出現uncommitted,
那剛剛的修改是跑去哪裡了呢?? 開啟submodule的smLibA看看吧!! 其實你可以想像submodule是存在於
git repository中的repository(submodule), git repository只記錄目前repository(submodule), 是對應到哪個
commit id, 而repository(submodule)自己管理自己修改.
接著commit+push, 別以為這樣就結束了, 我們還要去確定smMain的subproject commit有沒有被修改, 要不然
下次Pull下來的時候我們submodule就不是我們修改過的!!
最後就Commit+Push吧!!
這時候我們就可以使用Git中submodule功能, 來管理我們的子模版, 在這裡我們配合使用GUI SourceTree(以下就簡稱ST吧), 以下就進入正文囉......
1. 準備工作
首先我們先建立兩個Repository分別叫smMain以及smLibA, 並把它們push到Git Server(ex: github, bitbucket…etc.), 在這裡就不多說了.
bitbucket
smMain: https://bitbucket.org/youngce/smmain
smLabA: https://bitbucket.org/youngce/smliba
2. 加入Submodule
在{path}/smMain中使用git submodule add命令添加submodule
git submodule add https://youngce@bitbucket.org/youngce/smliba.git libs/smlibA
libs/smlibA表示將子模塊clone到{path}/smMain/libs/smlibA路徑下, 成功訊息如下圖,
在smMain資料夾中可以發現多一個libs資料夾了, 在ST也出現了uncommitted changes以及submodules了
接下來Commit再Push就好了.
其實我們可以從上圖的libs/smlibA的檔案內容看出來, 在smMain的repository就只是記錄subproject 的commit id 而已.
3. Submodule更新
當發現smLibA更新時, 如何在smMain也進行更新呢??
首先我先更新一下smLibA,
點擊smMain的Tag, 然後點開Submodules, 在smLaibA上點擊兩下
這時會開啟一個名為smLibA的新Tag, 這個smLibA指的smMain下的smLibA, 接下來就按下Pull做更新了
回到smMain會發現新的uncommitted, libs/smLibA中的subproject commit已經被修改為最新的commit id了
最後別忘了commit+push就完成了.
4. Submodule修改
在開發的過程可能會解決一些子項目的Bug或增加函式, 那如何做這樣的修改並更新到子項目的repository呢??
在這裡, 將由smMain中修改smLibA, 最後再push到真正的smLibA的repository.
就直接由smMain資料夾中對libA.txt做修改吧!! 在修改完後你會發現ST中smMain並沒有出現uncommitted,
那剛剛的修改是跑去哪裡了呢?? 開啟submodule的smLibA看看吧!! 其實你可以想像submodule是存在於
git repository中的repository(submodule), git repository只記錄目前repository(submodule), 是對應到哪個
commit id, 而repository(submodule)自己管理自己修改.
接著commit+push, 別以為這樣就結束了, 我們還要去確定smMain的subproject commit有沒有被修改, 要不然
下次Pull下來的時候我們submodule就不是我們修改過的!!
最後就Commit+Push吧!!
相关文章推荐
- git submodule 依赖模块更新
- git对submodule多模块的tag操作(并同步到远程分支)
- git submodule,解决依赖模块更新
- git 工具 - 子模块(submodule)
- Git 子模块 - submodule(转)
- 如何从git中移除一个子模块(submodule)
- Git Submodule管理项目子模块 使用场景 当项目越来越庞大之后,不可避免的要拆分成多个子模块,我们希望各个子模块有独立的版本管理,并且由专门的人去维护,这时候我们就要用到git的
- git submodule update安装/升级模块的github配置
- git子模块使用之git submodule与 git subtree比较
- Flex 利用ActionScript接口实现Module模块间的数据通信
- git submodule,解决依赖模块更新
- 利用HttpModule实现浏览器版本控制
- asp.net 利用Web.config的HttpModule 实现整站301永久重定向(简单方便)
- 利用MCS-51系列单片机和0038模块实现红外线解码
- 利用bigpipe机制实现页面模块的异步渲染
- 利用HttpModule实现防sql注入
- 利用HttpModule实现防sql注入
- 利用自定义IHttpModule来实现URL地址重写
- linux-2.6内核模块引用计数的实现(try_module_get和module_put)
- asp.net利用HttpModule实现防sql注入