当我们在git存储库中有很多(例如20个)子模块时,我们可以像这样安装(和更新)它们:
git submodules update --init --recursive
Git尝试在此命令后下载每个子模块(递归)。如果我们想让一些子模块可选(如插件)怎么办?
我们如何让git跳过默认下载这些可选子模块,并在我们标记这个子模块时将其作为通常的子模块处理"好的,从现在开始使用它"?
答案 0 :(得分:0)
一种方法是:
To get the list of submodules和format仅显示子模块路径:
function presentFunction() {
if(document.contains(document.getElementById("p5")))
{
document.getElementById("p5").remove();
document.getElementById("ptr5").remove();
document.getElementById("p4").style.transform = "translate(100px,0px)";
document.getElementById("p3").style.transform = "translate(100px,0px)";
document.getElementById("p2").style.transform = "translate(100px,0px)";
document.getElementById("p1").style.transform = "translate(100px,0px)";
document.getElementById("ptr4").style.transform = "translate(100px,0px)";
document.getElementById("ptr3").style.transform = "translate(100px,0px)";
document.getElementById("ptr2").style.transform = "translate(100px,0px)";
document.getElementById("ptr1").style.transform = "translate(100px,0px)";
}
else if(document.contains(document.getElementById("p4")))
{
document.getElementById("p4").remove();
document.getElementById("ptr4").remove();
document.getElementById("p3").style.transform = "translate(200px,0px)";
document.getElementById("p2").style.transform = "translate(200px,0px)";
document.getElementById("p1").style.transform = "translate(200px,0px)";
document.getElementById("ptr3").style.transform = "translate(200px,0px)";
document.getElementById("ptr2").style.transform = "translate(200px,0px)";
document.getElementById("ptr1").style.transform = "translate(200px,0px)";
}
else if(document.contains(document.getElementById("p3")))
{
document.getElementById("p3").remove();
document.getElementById("ptr3").remove();
document.getElementById("p2").style.transform = "translate(300px,0px)";
document.getElementById("p1").style.transform = "translate(300px,0px)";
document.getElementById("ptr2").style.transform = "translate(300px,0px)";
document.getElementById("ptr1").style.transform = "translate(300px,0px)";
}
else if(document.contains(document.getElementById("p2")))
{
document.getElementById("p2").remove();
document.getElementById("ptr2").remove();
document.getElementById("p1").style.transform = "translate(400px,0px)";
document.getElementById("ptr1").style.transform = "translate(400px,0px)";
}
else if(document.contains(document.getElementById("p1")))
{
document.getElementById("p1").remove();
document.getElementById("ptr1").remove();
}
}
git submodule--helper list | awk '{$1=$2=$3=""; print substr($0,4)}'
将这两个命令与xargs和tr实用程序结合在一起,并进一步使用命令替换,
git -c submodule."X".update=none submodule update --init --recursive
xargs util的交互模式允许用户通过提供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
格式的输入来选择要更新的子模块。输入(y/n)
表示在更新期间排除了子模块。输入y
表示未执行任何操作。
注意:
假定此处的子模块名称与其路径相同。但是,请查看here,以获取名称和路径有所不同的子模块名称。
要(永久地)排除或包含子模块X,应将属性n
添加到local repo的gitconfig文件中。对于排除,请使用此命令
submodule."X".update
设置为submodule."X".update
none
并使用此命令取消设置
git config --local submodule."X".update none
要排除嵌套子模块,请遵循this