Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 使用;git子模块foreach“;你能跳过子模块的列表吗?_Linux_Git_Foreach_Git Submodules - Fatal编程技术网

Linux 使用;git子模块foreach“;你能跳过子模块的列表吗?

Linux 使用;git子模块foreach“;你能跳过子模块的列表吗?,linux,git,foreach,git-submodules,Linux,Git,Foreach,Git Submodules,假设我有10个子模块: module/1 module/2 module/3 module/4 module/5 module/6 module/7 module/8 module/9 module/10 其中,module/是顶级回购 我想为每个“git status”执行git子模块,但不想为子模块4、6和7执行 有没有办法做到这一点,比如: git子模块foreach--exclude=“4 6 7”'git status' 我尝试在命令块中使用 git submodule foreac

假设我有10个子模块:

module/1
module/2
module/3
module/4
module/5
module/6
module/7
module/8
module/9
module/10
其中,
module/
是顶级回购

我想为每个“git status”执行git子模块,但不想为子模块4、6和7执行

有没有办法做到这一点,比如:

git子模块foreach--exclude=“4 6 7”'git status'

我尝试在命令块中使用

git submodule foreach '
    if [[ $list_of_ignores =~ *"$displayname"* ]] ; then echo ignore; fi
'
更新-删除了意外出现的
--exclude=“4 6 7”


但是我得到的错误是,
eval[[:not found
-我假设这是因为它使用了/bin/sh而不是/bin/bash?-不确定…

正如文档所说,foreach执行shell命令


我试过这个。它很有效。我试过c&p'ing你说你试过的。它没有给出你说的错误,Git拒绝它是因为一个错误的选择。请停止在你的问题中伪造证据。

Git子模块
仍然是一个。你可以看到
cmd\u foreach
是如何工作的,如果你喜欢,可以复制到你自己的变体并添加功能。不幸大部分工作都发生在
git子模块helper
中,它不是一个脚本。我看到了case方法,但我不能通过变量列表(例如,
$list\u of\u忽略
,其中包含调用者指定的一些列表)将这些参数传递到脚本中。这有点太硬了:(是否可以通过传递一个包含要忽略的子模块列表的变量来完成?+1,目前为止的答案是:)确定:
excludes='4 | 6 | 7'git子模块foreach'eval'case\$name in$excludes);;*)git status;;esac““
两点,我刚刚注意到你的
请停止伪造证据
评论。我不是,不明白为什么有人会这样做。我只是重新运行了它,我得到了与我提到的相同的错误。第二点-我似乎不能使用每个“cmd块”的子模块之外的变量集。所以你的变量
在你的评论中排除了
似乎计算为空字符串。重新阅读手册页(您粘贴)后,似乎表明我们无法访问外部变量……(注意:我刚刚删除了
--exclude=“4 6 7”
c&p'ed的一部分内容。它被错误地留在那里。因此,现在它将给出我提到的错误-再次强调,不是伪造的,只是弄错了。因此,我对你的“请停止”是“请停止下结论,不要想最坏的人”:这个shell是ubuntu 18.04附带的,在我看来相当不错。你的例子就是简单不起作用。使用单引号不能扩展变量,你需要使用双引号,就像我向你展示的那样:)。我没有添加“虚假文本”。如果你在我“伪造”之前查看代码,这不是故意的代码你会看到与我删除的完全相同的文本-这被称为复制/粘贴错误,我只是认为指责某人因为犯了错误而伪造是不公平的。我想你在哪里寻找的词是:“是的,我的坏…对不起,伙计”
foreach [--recursive] <command>
    Evaluates an arbitrary shell command in each checked out submodule. The 
    command has access to the variables $name, $sm_path, $displaypath, $sha1
    and $toplevel
 git submodule foreach 'case $name in 4|6|7) ;; *) git status ;; esac'