git submodule

submodule 实践

加入 submodule

建立 submodule 时使用 -b 参数,使得母项目追踪子项目的指定 branch(否则默认不追踪)

git submodule add -b <branch> <repository> [<submodule-path>]
git submodule update --remote

修复所有子项目的 detached head

如果没有加入 submodule 时没有加上 -b 参数,采用如下方式修复。这里跟踪的是 master 分支,如果你的分支不是 master,请自行更换为相应的分支

git submodule foreach -q --recursive 'git checkout $(git config -f $toplevel/.gitmodules submodule.$name.branch || echo master)'

拉取 submodule 的过程

以下操作都是在项目根目录进行

  1. clone 项目
git clone --recursive [email protected]:name/repo.git
  1. 初始化并更新 submodule
git 
git submodule update --init
  1. 让母项目追踪子项目指定 branch

否则 push 会丢失

git submodule foreach -q --recursive 'git checkout $(git config -f $toplevel/.gitmodules submodule.$name.branch || echo master)'
  1. pull 拉取更新
# or git 2.14
git pull origin <branch> --recurse-submodules
# or git 2.15+
git config --global submodule.recurse true
git pull origin <branch>

修改 submodule

  1. 进入 submodule 目录
cd <submodule-directory>
  1. 提交
git commit -am "修改文件"
  1. push
git push origin <branch>
  1. 回到项目根目录
cd <project-directory>
  1. commit 并 push
git commit -m'update submodule'
git push origin <branch>

你可能感兴趣的:(运维)