cer*_*cem 8 git plugins git-submodules
当我们在git存储库中有很多(比如20个)子模块时,我们可以像这样安装(和更新)它们:
git submodules update --init --recursive
Run Code Online (Sandbox Code Playgroud)
Git尝试在此命令后下载每个子模块(递归).如果我们想让一些子模块可选(如插件)怎么办?
我们怎样才能让git跳过默认下载这些可选子模块,并在我们标记这个子模块时处理为通常的子模块"好的,从现在开始使用"?
一种方法是:
git submodule--helper list | awk '{$1=$2=$3=""; print substr($0,4)}'
Run Code Online (Sandbox Code Playgroud)
git -c submodule."X".update=none submodule update --init --recursive
Run Code Online (Sandbox Code Playgroud)
将这两个命令与 xargs 和tr实用程序结合起来,并进一步使用命令替换,
git $(git submodule--helper list | awk '{$1=$2=$3=""; print substr($0,4)}' | xargs -pI % echo -c submodule.\"%\".update=none | tr '\n' ' '| xargs echo) submodule update --init --recursive
Run Code Online (Sandbox Code Playgroud)
xargs util 的交互模式允许用户选择要更新的子模块,即通过提供格式输入(y/n)
。输入y
表明子模块在更新期间被排除。输入n
表示未采取任何操作。
笔记:
此处的子模块名称假定与其路径相同。但是,请查看此处以获取具有不同名称和路径的子模块名称。
要(永久)排除或包含子模块 X,submodule."X".update
应将该属性添加到本地 repo的 gitconfig 文件中。对于使用此命令在配置文件中submodule."X".update
设置的排除none
git config --local submodule."X".update none
Run Code Online (Sandbox Code Playgroud)
并使用此命令取消设置以包含在内
git config --local --unset submodule."X".update
Run Code Online (Sandbox Code Playgroud)要排除嵌套子模块,请按照此操作
归档时间: |
|
查看次数: |
263 次 |
最近记录: |