gpt4 book ai didi

visual-studio - 即使操作成功,PowerShell 也会在控制台中将一些 git 命令结果显示为错误

转载 作者:IT王子 更新时间:2023-10-29 01:06:15 25 4
gpt4 key购买 nike

当我在 PowerShell 中执行 Git 命令时,除了 PowerShell 控制台和 NuGet 控制台之间的一个细微差别外,一切都运行良好。 “git push”的输出在 NuGet 窗口中以红色错误文本显示,但在 PowerShell 窗口中显示正常。

这是一个显示差异的视频。 “git push”在包管理器控制台中将其结果显示为错误。操作成功了,操作的输出显示为错误,这很烦人。

See the video

最佳答案

根本原因:git push 将输出发送到 stderr,而不是 stdout。参见 here , here .

当 native 工具将输出发送到 stderr 时,作为主机的 Powershell.exe 不会担心,因为这是一种比较常见的方式,不仅可以打印错误消息,还可以打印状态消息和其他内容。例如,尝试运行一些完全伪造的东西,比如

PS C:\> $result = findstr.exe q w e r t y

Findstr 正在向 stderr 发送错误消息,因此 Powershell.exe 知道不要将“错误”输出分配给您的变量,但它也不会 panic 。

另一方面,NuGet 包管理器主机在这方面并不那么聪明。在运行任何 native 工具时,此主机会将 stderr 中的任何内容解释为真正的错误。因此,您会得到红色文本、诊断消息等。在 PM 中尝试上面相同的 findstr 示例,您将看到完整的错误。

一些解决方法/建议:

  • 使用 --porcelain 参数,这会导致输出转到 stdout, not stderr .
  • 设置 $errorView = 'CategoryView' 这至少会最小化错误消息,但不会删除它们
  • 重定向 stderr 并像这样写一个普通的控制台:git push 2>&1 |写主机

关于visual-studio - 即使操作成功,PowerShell 也会在控制台中将一些 git 命令结果显示为错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12751261/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com