エラーメッセージのソースは次のとおりです。
$ git log %ad
fatal: ambiguous argument '%ad': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions
次の2つのコマンドから同じエラーメッセージが表示されます。
$ git log --pretty=format:%h %ad | %s%d [%an] --graph --date=short
$ git log --pretty=format:\"%h %ad | %s%d [%an]\" --graph --date=short
問題はgit log
、次の2つの引数を受け取ることです:(--pretty=format:%h
または--pretty=format:\"%h
)および%ad
。残りは、少なくともbashのコマンドとして直接実行される場合%s%d
、通常は存在しないcommandへのパイプです。したがって、私のシステムの完全なエラーメッセージは次のようになります。
$ git log --pretty=format:%h %ad | %s%d [%an] --graph --date=short
bash: %s%d: command not found
fatal: ambiguous argument '%ad': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions
これらすべては、引用が何らかの形で失わ%ad
れ、git logのパラメーターとして解釈されることを示しています。これを防ぐには、引用符とエスケープの正しい組み合わせを見つけて、実行時にフォーマット文字列が正しく引用符で囲まれるようにする必要があります。
エイリアスと引用に関するgit設定マニュアル:
引数はスペースで区切られ、通常のシェルの引用とエスケープがサポートされています。引用符のペアとバックスラッシュを使用してそれらを引用できます。
この行から、引用とエスケープの仕組みを理解できませんでした。エイリアスで引用とエスケープのいくつかの組み合わせを試しましたが、それを理解することができませんでした。
質問に投稿した次の行は、私のシステムでは問題なく機能します。
[alias]
hist = log --pretty=format:\"%h %ad | %s%d [%an]\" --graph --date=short
PuTTYとすべてを使用している間、システムで適切な組み合わせを取得するには、実験する必要があります。