Git ブランチと雲が描かれた、開かれた本

git-show

git-show とは

git-show は、blob、ツリー、タグ、コミットなどの Git オブジェクトの広範な詳細を表示するために使用されるコマンドラインユーティリティです。git-show の動作は、オブジェクトタイプごとに異なります。

タグにはタグメッセージと、タグに含まれるその他のオブジェクトが表示されます。ツリーにはツリー内のオブジェクトの名前とコンテンツが表示されます。blob には blob のコンテンツがそのまま表示されます。コミットにはコミットログのメッセージと、コミットにおける変更の diff 出力が表示されます。

Git オブジェクトは、すべて参照によってアクセスされます。デフォルトでは、git-show は HEAD 参照に対して機能します。HEAD 参照は、常に現在のブランチの最終コミットをポイントします。そのため、git-show を使用して最新のコミットのログメッセージと diff 出力を表示できます。

git-show のオプション

<object>…
オブジェクトやオブジェクトリストの参照を渡して、特定のオブジェクトを検証できます。明示的なオブジェクトが渡されない場合、git-show は HEAD 参照にデフォルト設定されます。

--pretty[=<format>]
pretty オプションでは、oneline、short、medium、full、fuller、email、raw のうちいずれかの二次書式値と format:<string> が指定されます。省略すると、書式は medium にデフォルト設定されます。各書式オプションは、Git での表示出力の書式設定に関する異なるテンプレートです。<code>oneline</code> オプションは、コミットのリストを表示するのに非常に役立ちます。

--abbrev-commit
このオプションにより、出力コミット ID の長さが短縮されます。コミット ID は 40 文字で、幅の狭い端末の画面では表示しにくいことがあります。このオプションと --pretty=oneline を組み合わせることで、git log の出力を非常に短くできます。

--no-abbrev-commit
常に完全な 40 文字のコミット ID を表示します。これにより、--abbrev-commit や、コミット ID を短縮する --oneline format などのその他すべてのオプションが無視されます。

--oneline
これは展開されたコマンドを使用するためのショートカットです。--pretty=oneline --abbrev-commit

--encoding[=<encoding>]
Git ログメッセージの文字エンコーディングは UTF-8 にデフォルト設定されますが、エンコーディングオプションが別の文字エンコーディング出力に変更される場合があります。これは、アジア言語を使用する端末など、文字エンコーディングが異なる環境で Git を使用する場合に有用です。

>--expand-tabs=<n>
--expand-tabs
--no-expand-tabs

これらのオプションにより、ログメッセージ出力で tab 文字がスペースによって置換されます。n 値を設定して、tab がいくつのスペース文字に展開されるのかを設定できます。n 値を明示的に指定しないと、tab は 8 つのスペースに展開されます。--no-expand-tabsn=0 に相当します。

--notes=<ref>
--no-notes

Git にはノートシステムがあり、任意の「note」メタデータをオブジェクトに添付できます。このデータを git-show を使用して非表示化またはフィルタリングできます。

--show-signature
このオプションでは、コミットの署名が暗号化されていることを gbp サブコマンドに渡すことで確認します。

git-show の pretty 書式

上記の --pretty オプションでは、git-show 出力の書式を整えるために複数の二次オプションが受け入れられます。以下は、サンプルテンプレートを含む二次オプションの一覧です。

  • oneline
    <sha1> <title line>

Oneline により、できるだけ多くの情報を 1 行にまとめます。

  • short
    commit <sha1>
    Author: <author>
    <title line>
  • medium
    commit <sha1>
    Author: <author>
    Date: <author date>
    <title line>
    <full commit message>
  • full
    commit <sha1>
    Author: <author>
    Commit: <committer>
    <title line>
    <full commit message>
  • fuller
    commit <sha1>
    Author: <author>
    AuthorDate: <author date>
    Commit: <committer>
    CommitDate: <committer date>
    <title line>
    <full commit message>
  • email
    From <sha1> <date>
    From: <author>
    Date: <author date>
    Subject: [PATCH] <title line>
    <full commit message>
  • raw
    raw 書式では、git-show に渡されるほかの直接書式設定オプションが無視され、コミットはオブジェクトに保存されたとおりに出力されます。raw では --abrev--no-abbrev は無視され、常に親コミットが表示されます。
  • format:
    format により、カスタム出力書式を指定できます。これは C 言語の printf コマンドと似ています。--pretty=format オプションでは、テンプレート文字列の二次値が指定されます。テンプレートは、コミットオブジェクトのデータが入力されるプレースホルダー変数にアクセスします。以下のようなプレースホルダーがあります。

    %H: コミットハッシュ
    %h: 短縮コミットハッシュ
    %T: ツリーハッシュ
    %t: 短縮ツリーハッシュ
    %P: 親ハッシュ
    %p: 短縮親ハッシュ
    %an: 作成者名
    %aN: 作成者名
    %ae: 作成者 E メール
    %aE: 作成者 E メール
    %ad: 作成者日付 (書式は --date= オプションに準拠)
    %aD: 作成者日付、RFC2822 スタイル
    %ar: 作成者日付、相対
    %at: 作成者日付、UNIX タイムスタンプ
    %ai: 作成者日付、ISO 8601 書式
    • %cn: コミッター名
    %cN: コミッター名
    %ce: コミッター E メール
    %cE: コミッター E メール
    %cd: コミッター日付
    %cD: コミッター日付、RFC2822 スタイル
    %cr: コミッター日付、相対
    %ct: コミッター日付、UNIX タイムスタンプ
    %ci: コミッター日付、ISO 8601 書式
    %d: ref 名、git-log(1) の --decorate オプションなど (1)
    %e: エンコーディング
    %s: 件名
    %f: ファイル名に適したサニタイズ済み件名行
    • %b: 本文
    %N: コミットノート
    %gD: reflog セレクター (refs/stash@{1} など)
    %gd: 短縮 reflog セレクター (stash@{1} など)
    %gs: reflog 件名
    %Cred: 色を赤に切り替え
    %Cgreen: 色を緑に切り替え
    %Cblue: 色を青に切り替え
    %Creset: 色をリセット
    %C(...): color.branch.* 設定オプションに記載されている色指定
    %m: 左、右または境界マーク
    %n: 改行
    %%: ロー %
    %x00: 16 進コードからのバイト印刷
    %w([<w>[,<i1>[,<i2>]]]): 行の折り返しの切り替え (git-shortlog の -w オプションなど)

git-show の例

git show --pretty="" --name-only bd61ad98

コミットで処理されたすべてのファイルが一覧にされます。

git show REVISION:path/to/file

特定のバージョンのファイルが表示されます。REVISON は Git sha で置換されます。

git show v2.0.0 6ef002d74cbbc099e1063728cab14ef1fc49c783

v2.0.0 タグと 6ef002d74cbbc099e1063728cab14ef1fc49c783 のコミットが表示されます。

git show commitA...commitD

commitA から commit D までの範囲内すべてのコミットが出力されます。

概要

git-show は、Git リポジトリのオブジェクトを検証する非常に用途の広いコマンドです。これを使用して、特定のバージョンの特定のファイルをターゲットにできます。git-show を使用してあるコミット範囲を検証すると、その範囲に含まれる個別のコミットすべてが出力されます。git-show は、パッチノートを作成し、リポジトリの変更を追跡するために利用できます。