1

エスケープ文字が (`)、バッククォートであることはわかっていますが、< 文字をエスケープするために使用しようとしてもエラーが発生します...

git log ORIG_HEAD --no-merges --date=short --pretty="format:<tr><td>%h</td><td>%ad</td><td>%an</td><td>%s</td></tr>" > test.txt
< was unexpected at this time.

上記のようにgitログをフォーマットするにはどうすればよいですか?

4

1 に答える 1

3

PowerShell v3 の場合は、これを試してください。

$out = git log ORIG_HEAD --% --no-merges --date=short --pretty="format:<tr><td>%h</td><td>%ad</td><td>%an</td><td>%s</td></tr>"
$out > test.txt

--% は、PowerShell をネイティブ実行可能ファイルにより適した別の解析モードにします。詳細については、このブログ投稿を参照してください。

PowerShell v3 を使用していない場合は、PowerShell Community Extensionsの echoargs を使用して、git.exe が PowerShellから引数を受け取るときに引数を確認することをお勧めします。

PS> echoargs log ORIG_HEAD --no-merges --date=short --pretty="format:<tr><td>%h</td><td>%ad</td><td>%an</td><td>%s</td></tr>"
Arg 0 is <log>
Arg 1 is <ORIG_HEAD>
Arg 2 is <--no-merges>
Arg 3 is <--date=short>
Arg 4 is <--pretty=format:<tr><td>%h</td><td>%ad</td><td>%an</td><td>%s</td></tr>>

Command line:
"C:\Program Files (x86)\PowerShell Community Extensions\Pscx3\Pscx\Apps\EchoArgs.exe"  log ORIG_HEAD --no-merges --date=short --pretty=format:<tr><td>%h</td><td>%ad</td><td>%an</td><td>%s</td></tr>

PowerShell がどのように引数を exe に渡しているかがわかれば、通常は余分な引用符を使用して引数をマッサージする方法を理解するチャンスがあります。

于 2012-12-31T18:46:33.263 に答える