最初の行だけでgitログを出力する方法は?


330

の形式をカスタマイズしようとしていますgit log。すべてのコミットを1行で表示したい。各行には、コミットメッセージの最初の行のみが表示されます。
それgit log --pretty=shortでうまくいくことがわかりましたが、私のコンピュータでgit logは(タイムスタンプのほかに)完全なログが表示されます。

さらに、manページで定義されているプレースホルダーを使用してみました。しかし、ログメッセージを短くするコマンドが見つかりませんでした。git log --pretty=format:'%h : %s'ショートハッシュ%hとメッセージ全体%sを1行で表示するこの行を試しました。

git version 1.7.3.1.msysgit.0Vistaで使用しています。


多分それは私が私のコミットメッセージを書く方法と関係があるのでしょう。次に例を示します。

Added some functionality.
+ Added print function in Foo class.
+ Added conversion from foo to baz.

したがって、与えられた例ではAdded some functionality.、短縮されたハッシュを前に付けて出力したいだけです。


1
%s完全なメッセージではなく件名です。
Josh Lee、

あなたが実際に何を望んでいるかを言うのは本当に難しいです。shortフォーマットがない(驚き!)が、1行ですoneline。場合oneline%h : %s、あなたが望むものではありません、何が彼らと間違っていますか?特に、%s件名は、コミットメッセージの最初の行です。それは確かに短縮版であるべきです。あなたはメッセージのために単一の長い行でコミットをしていて、何とかしてワードラップでそれらを表示している可能性はありますか?
Cascabel 2010

あなたは完全に理解しています。問題は、ということですonelineし、%s自分のコンピュータ上で、少なくとも、我々が期待出力をしないでください。私は自分のコミットメッセージの例で投稿を更新しました。多分それは役立ちます。
JJD 2010

回答:


544

これを試しましたか?

git log --pretty=oneline --abbrev-commit

問題は、おそらく最初の行の後に空の行がないことです。上記のコマンドは通常私のために動作しますが、私は空の2行目なしのコミットでテストしました。私はあなたと同じ結果を得ました:メッセージ全体を一行で。

空の2行目はgit commitメッセージの標準です。あなたが見る行動はおそらく意図的に実装されました。

コミットメッセージの最初の行は、簡単な説明です。単一行で作成できない場合は、複数を使用できますが、gitは最初の空行の前のすべてを「短い説明」と見なします。oneline短い説明全体を印刷するため、3行すべてが表示されます。


ありがとう!あなたは謎を解決しました:私はコミットメッセージの最初の行の後に空の行がないため、残りの件名から件名を区別していません。それでも、私が自由に入れたり、外したりできればいいのですが。
JJD 2010

1
問題ない。実際、空の行があってもなくてもかまいません。省略した場合は、メッセージ全体がショートメッセージになります。私はこの短い説明/詳細な説明が好きです。私は、短い説明を1行に制限することが問題であったため、空行が必要であると考えています。の出力はいつでもgit logフィルタリングスクリプトにパイプ処理できますが、私は空の行で短い説明を書くことを強くお勧めします。
Gauthier

89
git log --oneline --onelineには、「-pretty = oneline --abbrev-commit」を一緒に使用するための組み込みの省略形もあります。
ジェレミーローガン

付加された短縮ハッシュタグをどのように取り除くのですか?それは少し詰め込まれてきれいではないというわけではありません。しかし、なしcut。それはawkワードでしょう...(BTW math Q:ストレージレベルで適切にエンコードされたハフマンシーケンスの次のビットがオンまたはオフになっている確率はどれくらいですか?ヒント:それは=== 50%です。)
Phlip

7
それはTXでした。あ、また、sでいっぱいのページを取得したので、当然%forを追加しました'%s'。C-;
Phlip 14/07/17

158

DOESはgit log --oneline何をしたいですか?


1
コミットメッセージ全体を1行にマージしたくありません。各コミットメッセージの最初の行のみを表示します。
JJD 2010

41

エイリアスを作成することにより、より良いより簡単な gitログ。以下のコードを1つのセッションで1回だけターミナルに貼り付けます。コードをzshrcまたはbashプロファイルに貼り付けて永続化します。

git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"

出力

git lg

変更された行を 出力する

git lg -p

または(推奨)
このコードをグローバル.gitconfigファイルに貼り付けます

[alias]
  lg = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit

参考文献。
https://coderwall.com/p/euwpig/a-better-git-log
Advanced Reading。
http://durdn.com/blog/2012/11/22/must-have-git-aliases-advanced-examples/


この例はpretty-formatの優れたデモですが、「下のコードを端末に1回だけ貼り付け」は「git lg」のエイリアスを作成しないため、間違っているように見えます
Drone2537

他の人に注意してください。このコマンドをバッチで実行する場合は、%を%%に、 'を ""に置き換えてください。結果= git log --color --graph --pretty=format:"%%Cred%%h%%Creset -%%C(yellow)%%d%%Creset %%s %%Cgreen(%%cr) %%C(bold blue)<%%an>%%Creset" --abbrev-commit %1。このbatファイルに-pを渡して、変更された行を取得することもできます
Dheeraj Bhaskar


25

グローバルエイリアスを定義して、短いログをより快適な方法で呼び出すことができます。

git config --global alias.slog "log --pretty=oneline --abbrev-commit"

次に、それを使用してそれを呼び出すことができますgit slog(有効になっている場合は、オートコンプリートでも機能します)。



-8

常にgit logそのような方法で使用したい場合は、gitエイリアスを追加することができます

git config --global alias.log log --oneline

その後、git log通常印刷されるものを印刷しますgit log --oneline


12
これは実際には機能しません。(A。gitエイリアスは組み込みのコマンド名をオーバーライドできないため)および(B.を引用符で囲む必要があるため"log --oneline")。
Max Nanasy 2013年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.