当我在 pwsh 中指定 gitrevisions(例如 HEAD@{3})时,我必须有条件地记住用引号将其引起来。如果我不这样做,它会将“@”视为数组子表达式运算符,这会破坏命令,导致 “致命:不明确的参数‘HEAD@’:未知修订版或路径不在工作树中”。
如何配置 git (2.44.0) 或 pwsh (7.4.2) 来防止这些冲突的符号?
我尝试过使用 git 和 pwsh 别名,但它们都只是命令的别名。
如何配置 git (2.44.0) 或 pwsh (7.4.2) 来防止这些冲突的符号?
你不能。您无法逃避正在使用的 shell 的语法规则。
PowerShell 的不同寻常之处在于,它比其他 shell 拥有更多元字符(具有特殊含义的字符),特别是包括
@ { } , ; `
(有关详细信息,请参阅此答案)。
要逐字使用这些字符,您需要:
,使用 `
(反引号)、PowerShell 的
转义字符。 例如,
git ... HEAD@`{3`}
@
确实不需要转义,因为它出现在参数的内部中。
中('...'
创建逐字字符串,或
"..."
创建可扩展(插值字符串)。
例如,git ... 'HEAD@{3}'
--%
(有关限制的摘要,请参阅
这个答案的底部部分)。 但是,您仍然需要记住在需要时使用it。
git ... --% HEAD@{3}
如果您不想了解哪些(其他)字符需要在 PowerShell 中转义/引用,您唯一的选择是调用不同的 shell
,例如 Windows 上的
cmd.exe
,并传递命令行来调用 as单个字符串。
然而,这可能会带来报价挑战并带来性能损失。例如,
cmd /c 'git ... HEAD@{3}'