无法获取 git ls-remote 列表并且标准输出没有错误
Cannot get git ls-remote list and no error at stdout
我在同一网络下的两台不同计算机上执行 git ls-remote ssh://git@git_repo:port *
,一台 Linux 另一台 Windows,在 Windows 我正在获取列表但是Linux 没有。 Linux.
上完全没有错误和空列表
两者都将 SSH 密钥添加到远程存储库,并且都能够克隆存储库。
更新 1:
Windows Git 版本:2.19.2.windows.1
Linux Git 版本:2.7.4
更新二:
存储库在 Gerrit 中。
更新 3:
我在使用 Jenkins 插件时遇到了这个问题 Extended Choice Parameter plugin。它自 2016 年以来没有变化。对此的任何解决方法也是一个答案。
有什么想法吗?
您可能应该使用:
git ls-remote ssh://git@git_repo:port
没有任何后缀,因为它默认列出所有内容。
您可以使用:
git ls-remote ssh://git@git_repo:port '*'
(或与双引号相同——其中一个或两个也适用于 Windows)。在 Unix/Linux-style 命令 shell 中,shell 将用 *
之前当前目录中所有文件的列表替换 *
=85=] 命令,除非您保护星号免受 shell.
你也可以使用单反冲:
git ls-remote ssh://git@git_repo:port \*
因为有很多方法可以保护单个字符免受 shell 的影响。规则有点复杂,但一般来说,单引号是 "most powerful" 引号,而双引号是 glob 字符 1 但不是其他扩展。2 如果您还没有在引号内,反斜杠会引用紧接的下一个字符(反斜杠 within 双引号的行为在某些情况下会有所不同shells).
1glob 字符为 *
、[
和 ?
。在 [
之后,glob 内的字符 运行 结束 ]
。因此 echo foo[abc]
查找名为 fooa
、foob
和 fooc
的文件。请注意 .
通常 而不是 特殊:foo.*
仅匹配名称以 foo.
开头的文件,即包括句点:名为 foo
不以foo.
开头,只以foo
开头,不匹配
Glob 与正则表达式非常不同:在正则表达式中,.
匹配任何字符(就像 ?
在 glob 中所做的那样)而星号表示 "repeat previous match zero or more times",因此 glob *
和正则表达式 .*
是相似的。 (在正则表达式匹配中,我们还需要考虑表达式是否anchored。globs总是被锚定,所以不会出现问题。)
2大多数扩展出现在美元符号 $
中,如 $var
或 ${var}
或 $(subcommand)
,但反引号还调用命令替换,如 echo `echo bar`
.
我在同一网络下的两台不同计算机上执行 git ls-remote ssh://git@git_repo:port *
,一台 Linux 另一台 Windows,在 Windows 我正在获取列表但是Linux 没有。 Linux.
两者都将 SSH 密钥添加到远程存储库,并且都能够克隆存储库。
更新 1:
Windows Git 版本:2.19.2.windows.1
Linux Git 版本:2.7.4
更新二:
存储库在 Gerrit 中。
更新 3:
我在使用 Jenkins 插件时遇到了这个问题 Extended Choice Parameter plugin。它自 2016 年以来没有变化。对此的任何解决方法也是一个答案。
有什么想法吗?
您可能应该使用:
git ls-remote ssh://git@git_repo:port
没有任何后缀,因为它默认列出所有内容。
您可以使用:
git ls-remote ssh://git@git_repo:port '*'
(或与双引号相同——其中一个或两个也适用于 Windows)。在 Unix/Linux-style 命令 shell 中,shell 将用 *
之前当前目录中所有文件的列表替换 *
=85=] 命令,除非您保护星号免受 shell.
你也可以使用单反冲:
git ls-remote ssh://git@git_repo:port \*
因为有很多方法可以保护单个字符免受 shell 的影响。规则有点复杂,但一般来说,单引号是 "most powerful" 引号,而双引号是 glob 字符 1 但不是其他扩展。2 如果您还没有在引号内,反斜杠会引用紧接的下一个字符(反斜杠 within 双引号的行为在某些情况下会有所不同shells).
1glob 字符为 *
、[
和 ?
。在 [
之后,glob 内的字符 运行 结束 ]
。因此 echo foo[abc]
查找名为 fooa
、foob
和 fooc
的文件。请注意 .
通常 而不是 特殊:foo.*
仅匹配名称以 foo.
开头的文件,即包括句点:名为 foo
不以foo.
开头,只以foo
开头,不匹配
Glob 与正则表达式非常不同:在正则表达式中,.
匹配任何字符(就像 ?
在 glob 中所做的那样)而星号表示 "repeat previous match zero or more times",因此 glob *
和正则表达式 .*
是相似的。 (在正则表达式匹配中,我们还需要考虑表达式是否anchored。globs总是被锚定,所以不会出现问题。)
2大多数扩展出现在美元符号 $
中,如 $var
或 ${var}
或 $(subcommand)
,但反引号还调用命令替换,如 echo `echo bar`
.