4

git log で最大フィールド長を指定するにはどうすればよいですか? 出力列を揃えたい。

4

2 に答える 2

8

外部ツールをまったく使用せずに列幅を指定できます。

git log --format="%<(25,trunc)%ad | %<(25,trunc)%s | %<(25,trunc)%an"

他のオプションのトンがあります。

%<|(25)

出力を列に揃えます。列を左バインド、右バインド、中央揃えなどにフォーマットできます: https://git-scm.com/docs/pretty-formats

残念ながら、これがいつ git に追加されたのかはわかりません。私は Windows で 2.10.1 を使用しています…</p>

于 2016-10-25T12:18:56.473 に答える
0

Windows を使用している場合は、PowerShell スクリプトを使用できます。出力間に特殊文字を使用してログをフォーマットし、そこからオブジェクトを作成し、次のFormat-Tableように指定できる にパイプしますWidth

git log --format="%ad|%s|%an" | ForEach-Object {
  New-Object PSObject -Property @{
    Time = $_.Split('|')[0]
    Message = $_.Split('|')[1]
    Author = $_.Split('|')[2]
  }
} | Format-Table -Property @{Expression={$_.Time};width=25;Label="Author date"}, 
                           @{Expression={$_.Message};Width=25;Label="Commit message"}, 
                           @{Expression={$_.Author};Width=11;Label="Author name"}

出力例:

Author date               Commit message            Author name
-----------               --------------            -----------
Sun Jun 16 12:49:03 20... added rand content 60 ... Bonke
Sun Jun 16 12:46:56 20... added rand content 61 ... Bonke
Sun Jun 16 12:46:37 20... change                    Bonke
Wed Apr 24 22:41:44 20... added rand content 17 ... Klas Mel...
Wed Apr 24 22:40:16 20... added rand content 8 t... Klas Mel...

代わりに bash で実行したい場合は、bash の類似のスクリプトを次に示します ( Git ログの表形式への回答に触発されています)。

git log --pretty=format:'%ad|%s|%an' | 
  while IFS='|' read time message author
  do 
    printf '%.25s %.25s %.11s\n' "$time" "$message" "$author"
  done

サンプル出力

Sun Jun 16 12:49:03 2013  added rand content 60 to  Bonke
Sun Jun 16 12:46:56 2013  added rand content 61 to  Bonke
Sun Jun 16 12:46:37 2013  change                    Bonke
Wed Apr 24 22:41:44 2013  added rand content 17 to  Klas Mellbo
Wed Apr 24 22:40:16 2013  added rand content 8 to . Klas Mellbo
于 2013-06-17T19:53:29.667 に答える