git reset HEAD@{n} 导致错误“未知开关 'e'”

jmo*_*eno 13 git powershell

我发出命令: git reset HEAD@{2} 并收到错误:未知开关“e”。

发生了什么?

mkl*_*nt0 24

在 PowerShell 中,与 in 不同cmd.exe@{/}元字符,需要使用单独 转义`(所谓的反引号)或将整个参数括在引号中

所以:

# Metacharacter-individual escaping
git reset HEAD`@`{2`} 

# Enclosing the whole argument in quotes
git reset 'HEAD@{2}' 
Run Code Online (Sandbox Code Playgroud)

笔记:


至于您看到的晦涩错误消息

  • 未转义的使用{...}导致后者被解释为脚本块

  • 由于自 PowerShell 7.3.1 起仍然存在的错误,脚本块的存在会不适当地触发将此类参数转换为传递给参数的 Base64 编码参数-encodedCommand,这仅在调用 PowerShell CLI 时才有意义(powershell.exe对于 Windows PowerShell,pwsh对于 PowerShell (Core) 7+) - 请参阅GitHub 问题 #10842

  • git因此-encodedCommand在其命令行上看到,并抱怨不知道 option -e

  • 很棒的答案,我已经有了新的基本答案,如果没有其他人这样做,我将发布它,但这好多了。 (2认同)
  • 啊; 所以 `git` 得到带有一个连字符的 `-encodedCommand` 并说“我不做 `-e`!” 多么深奥啊。 (2认同)