web-dev-qa-db-ja.com

作者と日付を含むgitログからの最短の出力

どのようにしてgitログ出力を(少なくとも)この情報と共に表示することができますか:

* author
* commit date
* change

ログエントリごとに1行に圧縮したい。そのための最短フォーマットは何ですか?

--format=onelineを試しましたが、日付は表示されません)

372

git log --pretty=format:"%h%x09%an%x09%ad%x09%s"

仕事をしました。これは出力します:

  fbc3503 mads    Thu Dec 4 07:43:27 2008 +0000   show mobile if phone is null...   
  ec36490 jesper  Wed Nov 26 05:41:37 2008 +0000  Cleanup after [942]: Using timezon
  ae62afd tobias  Tue Nov 25 21:42:55 2008 +0000  Fixed #67 by adding time zone supp
  164be7e mads    Tue Nov 25 19:56:43 2008 +0000  fixed tests, and a 'unending appoi
  93f1526 jesper  Tue Nov 25 09:45:56 2008 +0000  adding time.ZONE.now as time zone 
  2f0f8c1 tobias  Tue Nov 25 03:07:02 2008 +0000  Timezone configured in environment
  a33c1dc jesper  Tue Nov 25 01:26:18 2008 +0000  updated to most recent will_pagina

stackoverflow question: "svn ls -vのようなgitログ出力" に触発されて、私は必要なパラメータを正確に追加できることを知りました。

日付を短くする(時間を表示しない)には--date=shortを使います。

あなたが異なるオプションが何であるかについて興味があったならば:
%h =コミットハッシュの短縮形
%x09 = tab(コード9の文字)
%an =著者名
%ad =作成者の日付(形式は--date =オプションを考慮しています)
%s =件名
kernel.org/pub/software/scm/git/docs/git-log.html (PRETTY FORMATSセクション)からVivekのコメント。

563
git log --pretty=format:"%H %an %ad"

日付フォーマットを設定するには--date=を使用してください

git log --pretty=format:"%H %an %ad" --date=short
88
knittl

tiggit logコマンドを使用する代わりになる可能性があり、主要なオープンソース* nixディストリビューションで利用可能です。

次のようにdebianまたはubuntをインストールして実行します。

$ Sudo apt-get install tig

(TIGはインストールされます)

$ tig

(ログは以下のようにページャーに表示され、現在のコミットのハッシュは下部に表示されます)

2010-03-17 01:07 ndesigner      changes to sponsors list
2010-03-17 00:19 rcoder         Raise 404 when an invalid year is specified.
2010-03-17 00:06 rcoder         Sponsors page now shows sponsors' level.
-------------------------- skip some lines ---------------------------------
[main] 531f35e925f53adeb2146dcfc9c6a6ef24e93619 - commit 1 of 32 (100%)

マークダウンはテキストの色付けをサポートしていないので、:column 1:blue;を想像してください。列2:緑色。列3:デフォルトのテキスト色最後の行、強調表示されています。終了するにはQまたはqを押してください。


tigはカラム不規則なエッジなしを正当化します。これはASCIIタブ(%x09)では保証されていません。

短い日付フォーマット大文字の場合D(注:小文字のdは差分ビューを開きます。)〜/ .tigrcにshow-date = shortを追加して永続的に設定します。 ;または.git/configureまたは〜/ .gitconfigの[tig]セクションにあります。

全体の変更を見るには:

  • Enterを打ちます。ウィンドウの下半分にサブペインが開きます。
  • サブペインで変更をスクロールするには、kjキーを使用します。
  • 同時に、pdownキーを使用して、コミットからコミットに移動します。

Tigはgitとは別のもので、明らかに* nix特有のものなので、おそらくWindowsにインストールするにはcygwinが必要です。しかし、Fedoraの場合、インストールコマンドは$ su(enter root password)# yum install tigであると思います。 freebsdには% su(enter root password)# pkg_add -r tigをお試しください。


ちなみに、tigはログの簡単な表示以上のものに適しています。 ScreenshotsManual

45
Joe Generic

これを使用してください。

git log --pretty="%C(Yellow)%h  %C(reset)%ad (%C(Green)%cr%C(reset))%x09 %C(Cyan)%an: %C(reset)%s"

見て:

enter image description here

40
git log --pretty=format:'%h %ad %s (%an)' --date=short  

または

git log --pretty=format:'%h %ad %s | %an' --date=short  

cdunn2001の答えを頼りにする:Jesperとknittlのように、私は作者のe = mailを失い、作者の名前だけを含めます。いい案!)。ただし、著者名の左揃えの列を別にする代わりに、コマンドの最後にそのフラグを括弧で囲むか、パイプでオフセットします。 (実際には、出力を読むときの視覚的な助けになる文字ならどれでもかまいませんが、出力をディレクトリなどと混同しないようにするために、スラッシュを前後に避けても意味があります。)

出力例:

6fdd155 2015-08-10 Fixes casting error in doSave | John Doe
c4f4032 2015-08-10 Fix for IE save. Add help button. | Jane
29a24a6 2015-08-10 Fixes bug in Course | Mac
33
Sean

定義済みのgitエイリアスを使用してください。

$ git work

コマンドによって1回作成されます。

$ git config --global alias.work 'log --pretty=format:"%h%x09%an%x09%ad%x09%s"'

https://git-scm.com/book/tr/v2/Git-Basics-Git-Aliases

もっとグラフで色付けする:

$ git config --global alias.work 'log --pretty=format:"%C(yellow)%h %ar %C(auto)%d %Creset %s , %Cblue%cn" --graph --all'

enter image description here

24
Míra
git log --pretty=format:'%h %ad  %s%x09%ae' --date=short

結果:

e17bae5 2011-09-30  Integrate from development -> main      [email protected]
eaead2c 2011-09-30  More stuff that is not worth mentioning [email protected]
eb6a336 2011-09-22  Merge branch 'freebase' into development        [email protected]

定幅のものが最初です。最も重要ではない部分 - 電子メールドメイン - は最後で、フィルタリングが簡単です。

8
cdunn2001

私がプッシュする準備ができている私が上演したコミットを示すために

git log remotes/trunk~4..HEAD --pretty=format:"%C(yellow)%h%C(white) %ad %aN%x09%d%x09%s" --date=short | awk -F'\t' '{gsub(/[, ]/,"",$2);gsub(/HEAD/, "\033[1;36mH\033[00m",$2);gsub(/master/, "\033[1;32mm\033[00m",$2);gsub(/trunk/, "\033[1;31mt\033[00m",$2);print $1 "\t" gensub(/([\(\)])/, "\033[0;33m\\1\033[00m","g",$2) $3}' | less -eiFRXS

出力は次のようになります。

ef87da7 2013-01-17 haslers      (Hm)Fix NPE in Frobble
8f6d80f 2013-01-17 haslers      Refactor Frobble
815813b 2013-01-17 haslers      (t)Add Wibble to Frobble
3616373 2013-01-17 haslers      Add Foo to Frobble
3b5ccf0 2013-01-17 haslers      Add Bar to Frobble
a1db9ef 2013-01-17 haslers      Add Frobble Widget

最初の列が黄色で表示され、文字列の 'H'、 'm'、 't'がHEAD、マスター、トランクを表示し、通常の "--decorate"の色で表示されます。

ここでは改行があるので、それが何をしているのかを見ることができます。

git log remotes/trunk~4..HEAD --date=short
    --pretty=format:"%C(yellow)%h%C(white) %ad %aN%x09%d%x09%s"
    | awk -F'\t' '{
         gsub(/[, ]/,"",$2);
         gsub(/HEAD/, "\033[1;36mH\033[00m",$2);
         gsub(/master/, "\033[1;32mm\033[00m",$2);
         gsub(/trunk/, "\033[1;31mt\033[00m",$2);
         print $1 "\t" gensub(/([\(\)])/, "\033[0;33m\\1\033[00m","g",$2) $3}'

私はエイリアスを使って「上演」しました:

git config alias.staged '!git log remotes/trunk~4..HEAD --date=short --pretty=format:"%C(yellow)%h%C(white) %ad %aN%x09%d%x09%s" | awk -F"\t" "{gsub(/[, ]/,\"\",\$2);gsub(/HEAD/, \"\033[1;36mH\033[00m\",\$2);gsub(/master/, \"\033[1;32mm\033[00m\",\$2);gsub(/trunk/, \"\033[1;31mt\033[00m\",\$2);print \$1 \"\t\" gensub(/([\(\)])/, \"\033[0;33m\\\\\1\033[00m\",\"g\",\$2) \$3}"'

(それを回避するためのもっと簡単な方法はありますか?エスケープする必要があるものを解決するのは少しトリッキーでした)

4
Sam Hasler

上記のすべての提案では、件名に%sプレースホルダーを使用しています。 %Bのフォーマット 新しい行は保持されます と複数行のコミットメッセージがつぶれて表示されるため、%sを使用することをお勧めします。

git log --pretty=format:"%h%x09%an%x09%ai%x09%B"
1
palik

プロジェクトフォルダでこれを実行します。

$ git log --pretty=format:"%C(yellow)%h %ar %C(auto)%d %Creset %s , %Cblue%cn" --graph --all

そしてあなたが好きなら、この行を〜/ .gitconfigに追加してください:

[alias]
    ...
    list = log --pretty=format:\"%C(yellow)%h %ar %C(auto)%d %Creset %s, %Cblue%cn\" --graph --all
0
MUH Mobile Inc.