查看“Git:子模块”的源代码
←
Git:子模块
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
[[category:Git]] == 关于submodule == 可以使用 '''<code>git submodule --help</code>''' 查看所有相关命令。 <syntaxhighlight lang="bash"> git clone <repository> --recursive //递归的方式克隆整个项目 git submodule add <repository> <path> //添加子模块 git submodule init //初始化子模块 git submodule update //更新子模块 git submodule foreach git pull //拉取所有子模块 </syntaxhighlight> == 拉取submodule == 当一个 git 项目包含子模块(submodule) 时,直接克隆下来的子模块目录里面是空的。有两种方法解决: # 如果项目已经克隆到了本地,执行下面的步骤: ## 初始化本地子模块配置文件:<syntaxhighlight lang="bash"> git submodule init </syntaxhighlight> ## 更新项目,抓取子模块内容:<syntaxhighlight lang="bash"> git submodule update </syntaxhighlight> # 对于未克隆项目,使用“--recursive”参数,可以自动初始化并更新每一个子模块。 #: <syntaxhighlight lang="bash"> git clone --recursive 仓库地址 </syntaxhighlight> Note: # 对于仓库首次拉取模块,可以使用: #: <syntaxhighlight lang="bash"> git submodule update --init --recursive </syntaxhighlight> # 更新子模块 #: <syntaxhighlight lang="bash"> # (适用于git 1.8.2及以上版本) git submodule update --recursive --remote #(适用于git 1.7.3及以上版本) git submodule update --recursive # 或者 git pull --recurse-submodules </syntaxhighlight> == 添加submodule == 关联项目子模块: <syntaxhighlight lang="properties"> git submodule add https://github.com/test/subb.git modules/subb </syntaxhighlight> 项目根目录下有一个.gitmodules文件,即子模块关联文件,如: <syntaxhighlight lang="properties"> [submodule "modules/suba"] path = modules/suba url = https://github.com/test/suba.git </syntaxhighlight> 每添加一个子模块就会新增一条记录,如果是第一次添加Git子模块会自动生成。 == 编辑submodule == 切换子模块到开发分支,如: <syntaxhighlight lang="bash"> cd modules/subb/ git checkout -b feature/some-change origin/dev </syntaxhighlight> 进行修改 == 推送submodule == 推送子模块修改到远程,如: <syntaxhighlight lang="bash"> git commit -am 'test commit submodule' git checkout dev git merge feature/some-change git push origin dev git branch -d feature/some-change </syntaxhighlight> 提交子模块修改之后,主项目会有一些修改: <syntaxhighlight lang="bash"> cd ../../ git diff > diff --git a/subb b/subb index 433859c..b78179a 160000 --- a/subb +++ b/subb @@ -1 +1 @@ -Subproject commit 433859c90e539d2a1b9fda27b32bef0d0acae9e6 +Subproject commit b78179adab252a524ff2a41d6407a7daa6dad34f </syntaxhighlight> 此时需要提交主项目该修改,才能在其他用户使用git submodule update时拉取新的代码: <syntaxhighlight lang="bash"> git commit -am "test commit submodule" git push origin dev </syntaxhighlight> == 删除submodule == git没有直接删除子模块的命令,所以只能逐步删除相关文件。 # 在版本控制中删除子模块: #: <syntaxhighlight lang="bash"> git rm -r modules/subb </syntaxhighlight> # 在编辑器中删除如下相关内容,也可以使用命令'''“vi .gitmodules”'''在vim中删除: #: <syntaxhighlight lang="bash"> [submodule "modules/subb"] path = modules/subb url = https://github.com/test/subb.git branch = dev </syntaxhighlight> # 在编辑器中删除如下相关内容,也可以使用命令'''“vim .git/config”'''在vim中删除: #: <syntaxhighlight lang="bash"> [submodule "modules/subb"] path = modules/subb url = https://github.com/test/subb.git active = true </syntaxhighlight> # 删除.git下的缓存模块: #: <syntaxhighlight lang="bash"> rm -rf .git/modules/subb </syntaxhighlight> # 提交修改: #: <syntaxhighlight lang="bash"> git commit -am "delete subb" git push origin dev </syntaxhighlight> == 发布项目 ==
返回至“
Git:子模块
”。
导航菜单
个人工具
登录
命名空间
页面
讨论
大陆简体
已展开
已折叠
查看
阅读
查看源代码
查看历史
更多
已展开
已折叠
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
笔记
服务器
数据库
后端
前端
工具
《To do list》
日常
阅读
电影
摄影
其他
Software
Windows
WIKIOE
所有分类
所有页面
侧边栏
站点日志
工具
链入页面
相关更改
特殊页面
页面信息