# git submodule

abstract

  • clone 包含子模块的项目
  • 更新子模块

clone 包含子模块的项目

  • 方式一
git clone url  // 默认会包含子模块文件夹,但是子模块中没有文件

进入子模块目录

cd directory  // 进如子模块所在目录

git submodule init // 初始化子模块仓库

git submodule update // 检出文件到目录 但是本地还没有分支
  • 方式二(推荐)
git clone url --recursive // 自动初始化 更新子模块

更新具体的某个子模块

  • 拉取 更新 子模块
cd submoduleDirectory
git fetch 
git merge

切换到主项目目录 查看子模块更新内容

cd .. 
git diff --submodule 

怕麻烦每次输入 --submodule添加一个log

git config --global diff.submodule log
git diff

更新项目所有的子模块

项目主目录下

git submodule update --remote // 默认 master 分支

配置其他分支

git config -f .gitmodules submodule.submoduleName.branch branchName

查看更新内容

git status 
git config status.submodulesummary 1 
git diff

项目中创建子模块

git submodule add url
git status // 配置文件 .gitmodules
git diff 
git diff --submodule
git diff --cached --submodule

子模块上工作

git submodule update // 运行之后文件更新到了目录 但是本地没有默认分支,需要自己建立

git checkout master // 检出master分支

git submodule update --remote --merge //

// 修改模块文件内容之后 提交合并
git submodule update --remote --rebase

// 主项目文件夹下
git push --recurse-submodules=check // 推送前检查子模块 子模块没有推送就返回失败

git push --recurse-submodules=on-demand // 推送主项目前 检查子模块并推送子模块

猜你喜欢

转载自www.cnblogs.com/rosendolu/p/11294511.html