最後のコミットをいくつか表示するための単純なエイリアスがあります。
log --pretty=format:'%h %an %s' -10
次のように、結果を列に表示するにはどうすればよいですか。
898e8789 Author1 Commit message here
803e8759 Other Author name Commit message here
Git 1.8.3以降では、これが pretty format でネイティブにサポートされており、%<(N)
構文を使用して次のプレースホルダーをとしてフォーマットします。 )[〜#〜] n [〜#〜]列幅:
$ git log --pretty=format:'%h %<(20)%an %s' -10
1.8.3より前のバージョンでは、以下に保持されているこの回答の以前のバージョンが機能するはずです。
これは、read
を使用してログ行を解析し、printf
を使用してログ行を出力し、作成者名の固定幅フィールドを使用して列が整列したままになるBashのソリューションです。 |
作者の名前に表示されることはありません。問題があると思われる場合は、別の区切り文字を選択できます。
git log --pretty=format:'%h|%an|%s' -10 |
while IFS='|' read hash author message
do
printf '%s %-20s %s\n' "$hash" "$author" "$message"
done
これは、次を使用してエイリアスとして作成できます。
[alias]
mylog = "!git log --pretty=format:'%h|%an|%s' -10 | while IFS='|' read hash author message; do printf '%s %-20s %s\n' \"$hash\" \"$author\" \"$message\"; done"
awk
を使用すると、より少ない文字数でこれを実行できると確信していますが、 ことわざ のように、
問題に直面するたびに、「AWKを使用しましょう」と言う人もいます。今、彼らは2つの問題を抱えています。
もちろん、そうは言っても、少し短いawk
でそれを行う方法を理解する必要がありました。
git ... | awk -F '|' '{ printf "%s %-20s %s\n", $1, $2, $3 }'
次のこともできます。
git log --pretty=format:'%h %<(20)%an %s' -10
シェルマジックやawk
、column
などによる後処理は必要ありません。
次のコマンドは、ログを表形式で印刷します
git log --pretty=format:'%h|%an|%s' -10 | column -t -s '|'
column コマンドは、「|」を使用して出力を「列化」しますフィールドセパレータとして、入力が与えられた場合に最適な列幅を見つけるので、フィールドがもっとある場合でもうまく機能します。
Linuxでは、色を使用しない限り問題なく動作します。Linuxの実装は ANSIエスケープコード をうまく処理しません。
ただし、Mac OS Xでは、色を処理し、フィールド区切り文字として任意のUnicode文字を使用できます。コミットテキストで偶然に発生しないと確信しているので、∑を使用します。 |
は、コミットの説明に表示される可能性があるため、不適切な選択です。また、--graph --decorate --all
を使用すると、グラフの描画に使用される記号の一部として表示されます。
真に表形式にするためには、たとえば、より長いユーザー名も切り捨てる必要があります。 20文字:
git log --pretty=format:'%h %<(20,trunc)%an %s' -10
さらに、端末に出力する場合は、コミットメッセージフィールドを切り捨てることにより、行のオーバーフローを防止することができます。
git log --pretty=format:'%h %<(20,trunc)%an %<(39,trunc)%s' -10
または、行を折り返し、オーバーフローした行をインデントして整列します。
git log --pretty=format:'%w(79, 0, 29)%h %<(20,trunc)%an %s' -10
編集:上記の例では、端末の幅を79文字にハードコーディングしています。 POSIXシステムでは、tput cols
を使用して幅を返すことができます。
git log --pretty=format:'%w(`tput cols`, 0, 29)%h %<(20,trunc)%an %s' -10
または
git log --pretty=format:'%w($((`tput cols`-1)), 0, 29)%h %<(20,trunc)%an %s' -10
残念ながら、これらの最後の2つはgit alias
を中断するため、ターミナルエイリアスが必要になります(入力が本当に好きでない限り)。
表形式の問題は、スペースが不足する可能性があるという事実です...
次の1つは、表示する重要なものの間の私の個人的な最善の妥協点です。
how
のコミットハッシュでさらに掘り下げることができるようにそう:
git log --pretty --format='%h %aI %<(15)%an ::: %s'
または
git log --pretty --format='%h %cI %<(15)%an ::: %s'
あなたが探しているのは:
%x09
_git log --pretty=format:"%C(Magenta)%h %C(cyan)%C(bold)%ad%Creset %C(cyan)%cr%Creset%x09 | %s %C(green)%Creset" --date=short
相対的な日付をタブで表示したかったのですが、固定長ではありませんでした。このようにして、すべての列が整列します(1年未満の場合)。ずっと並べたかったのですが、(皮肉なことに)時間切れになる前のことです。
お役に立てれば!
相対的な年のケース(年をgrepするだけでなく)についてこの回答を改善するための提案がある場合は、それを聞いて喜んでください。方法を知っている場合は、この回答を編集して追加してください。