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
これらのオプションにより、ログ メッセージ出力でタブ文字がスペースに置換されます。n 値を設定して、タブがいくつのスペース文字に展開されるのかを設定できます。n 値を明示的に指定しないと、タブは 8 つのスペースに展開されます。--no-expand-tabs は n=0 に相当します。
--notes=<ref>--no-notes
Git にはノート システムがあり、任意の「note」メタデータをオブジェクトに添付できます。このデータを git-show を使用して非表示化またはフィルタリングできます。
--show-signature
このオプションでは、コミットを gpg サブコマンドに渡すことで、暗号化された署名でコミットが署名されていることを検証します。
git-show の pretty 書式
上記の --pretty オプションでは、git-show 出力の書式を整えるために複数の二次オプションが受け入れられます。以下は、サンプル テンプレートを含む二次オプションの一覧です。
Oneline
<sha1> <title line>Oneline により、できるだけ多くの情報を 1 行にまとめます。
short
commit <sha1>
Author: <author>
<title line>中
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>E メール
From <sha1> <date>
From: <author>
Date: <author date>
Subject: [PATCH] <title line>
<full commit message>raw
raw 書式では、git-show に渡される他の直接書式設定オプションが無視され、コミットはオブジェクトに保存されたとおりに出力されます。raw では --abrev と --no-abbrev は無視され、常に親コミットが表示されます。
フォーマット
format により、カスタム出力書式を指定できます。これは C 言語の printf コマンドと似ています。--pretty=format オプションでは、テンプレート文字列のセカンダリ値が指定されます。テンプレートは、コミット オブジェクトのデータが入力されるプレースホルダー変数にアクセスできます。以下にそれらのプレースホルダーの一覧を示します。
%H: コミット ハッシュ
%h: 短縮コミット ハッシュ
%T: ツリー ハッシュ
%t: 短縮ツリー ハッシュ
%P: 親ハッシュ
%p: 短縮親ハッシュ
%an: 作成者名
%aN: 作成者名
%ae: 作成者電子メール
%aE: 作成者電子メール
%ad: 作成者日付 (書式は --date= オプションに従います)
%aD: 作成者日付、RFC2822 スタイル
%ar: 作成者日付、相対
%at: 作成者日付、UNIX タイムスタンプ
%ai: 作成者日付、ISO 8601 書式
%cn: コミッター名
%cN: コミッター名
%ce: コミッター電子メール
%cE: コミッター電子メール
%cd: コミッター日付
%cD: コミッター日付、RFC2822 スタイル
%cr: コミッター日付、相対
%ct: コミッター日付、UNIX タイムスタンプ
%ci: コミッター日付、ISO 8601 書式
%d: git-log(1) の --decorate オプションのような参照名
%e: エンコーディング
%s: 件名
%f: ファイル名に適した、サニタイズされた件名
%b: 本文
%N: コミット ノート
%gD: 参照ログ セレクター、例: refs/stash@ {1}
%gd: 短縮参照ログ セレクター、例: stash@ {1}
%gs: 参照ログ件名
%Cred: 色を赤に変更
%Cgreen: 色を緑に変更
%Cblue: 色を青に変更
%Creset: 色をリセット
%C (...): color.branch で記述されている色指定。*config オプション
%m: 左、右、または境界マーク
%n: 改行
%%: raw %
%x00: 16 進コードから 1 バイトを出力します
%w ([[, [,]]]): 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 6ef002d74cbbc099e1063728cab14ef1fc49c783v2.0.0 タグと 6ef002d74cbbc099e1063728cab14ef1fc49c783 のコミットが表示されます。
git show commitA...commitDcommitA から commit D までの範囲内すべてのコミットが出力されます。
要約
git-show は、Git リポジトリのオブジェクトを検証する非常に用途の広いコマンドです。これを使用して、特定のバージョンの特定のファイルをターゲットにできます。git-show を使用してあるコミット範囲を検証すると、その範囲に含まれる個別のコミットすべてが出力されます。git-show は、パッチ ノートを作成し、リポジトリの変更を追跡するために利用できます。