Che*_*hev 9 git powershell visual-studio nuget visual-studio-2012
当我在PowerShell中执行Git命令时,一切都很顺利,除了PowerShell控制台和NuGet控制台之间的一个细微差别." git push" 的输出显示在NuGet窗口中的红色错误文本中,但在PowerShell窗口中显示正常.
这是一段显示差异的视频." git push"在包管理器控制台中将其结果显示为错误.该操作有效,令人讨厌的是操作的输出显示为错误.
lat*_*kin 25
根本原因:git push将输出发送到stderr,而不是stdout.见这里,这里.
当本机工具将输出发送到stderr时,Powershell.exe作为主机不会担心,因为这是打印错误消息但状态消息和其他内容的一种常见方式.例如,尝试运行完全虚假的东西
PS C:\> $result = findstr.exe q w e r t y
Run Code Online (Sandbox Code Playgroud)
Findstr正在向stderr发送错误消息,因此Powershell.exe知道不会将"错误"输出分配给您的变量,但它也不会吓坏.
另一方面,NuGet包管理器主机在这方面并不那么聪明.运行任何本机工具时,此主机会将stderr中的任何内容解释为真正的错误.因此,您将获得红色文本,诊断消息等.findstr在PM中尝试上面的相同示例,您将看到完整错误.
几个变通办法/建议:
--porcelain参数,导致输出转到stdout,而不是stderr.$errorView = 'CategoryView'哪个将至少最小化错误消息,但不删除它们git push 2>&1 | write-host 要解决此问题并继续使用 Powershell ISE,您可以创建一个包含以下内容的 cmd 文件:
@echo off
git.exe %1 %2 %3 %4 %5 %6 %7 %8 %9 2>&1
Run Code Online (Sandbox Code Playgroud)
并将其注册为别名(在您的个人资料中):
Set-Alias git "git.cmd"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3058 次 |
| 最近记录: |