根本原因:git push
はない標準出力、標準エラー出力に出力を送信しています。 here,hereを参照してください。
ネイティブツールが出力をstderrに送信すると、Powershell.exeがホストとして気になることはありません。これは、エラーメッセージだけでなくステータスメッセージなどを印刷するためのやや一般的な方法です。例えば、
PS C:\> $result = findstr.exe q w e r t y
のような完全に偽の何かを実行してみたpowershell.exeがあなたの変数にその「エラー」の出力を割り当てることがない知っているのでをFindstrは、標準エラー出力にエラーメッセージを送信していますが、それはまた、フリークアウトしません。
NuGetパッケージマネージャーホストは、この点では賢明ではありません。任意のネイティブツールを実行すると、このホストはstderr内の何かを真にエラーとして解釈します。したがって、あなたは赤いテキスト、診断メッセージなどを取得します。上のPMと同じfindstr
の例を試してみましょう。完全なエラーが表示されます。
回避策/提案のカップル:
- 出力はstdout, not stderrに行くことになり
--porcelain
パラメータを使用します。
- 彼らに
- リダイレクト標準エラー出力を削除して、このようなプレーンなコンソールの書き込みを行うにはないが、少なくとも、エラーメッセージを最小化する設定
$errorView = 'CategoryView'
:git push 2>&1 | write-host
マイクロソフトの関連性の高い編集に感謝します。 – Chev