これは、Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、または MAC OS オンライン エミュレーターなどの複数の無料オンライン ワークステーションの XNUMX つを使用して、OnWorks 無料ホスティング プロバイダーで実行できるコマンド git-log です。
プログラム:
NAME
git-log - コミットログを表示する
SYNOPSIS
git ログ [ ][ ] [[--] ...]
DESCRIPTION
コミットログを表示します。
このコマンドは、 git rev-list コマンドに適用できるオプションを使用して、表示内容を制御します。
それぞれの変更を制御する git diff-* コマンドに適用できる方法とオプション
コミットの紹介が表示されます。
OPTIONS
-フォローする
名前変更後もファイルの履歴をリストし続けます (単一のファイルに対してのみ機能します)。
--no-decorate、--decorate[=short|full|no]
表示されているコミットの参照名を出力します。 もし 短い が指定されている場合、参照
名前の接頭辞 参照/ヘッド/, 参照/タグ/ refs / remotes / 印刷されません。 もし 全体像を
を指定すると、完全な参照名 (プレフィックスを含む) が出力されます。 デフォルトのオプション
is 短い.
- ソース
各コミットに到達するまでにコマンドラインで指定された参照名を出力します。
--use-mailmap
メールマップ ファイルを使用して、作成者とコミッターの名前および電子メール アドレスを正規にマップします。
本名とメールアドレス。 見る gitショートログとします。
--完全差分
このフラグを使用しない場合、 git log -p ... 指定されたパスに触れるコミットを示します。
指定された同じパスに関する diff を実行します。 これにより、完全な差分が表示されます
指定されたパスに触れるコミット。 この意味は " ..." 制限のみ
コミットし、それらのコミットの差分を制限しません。
これは、すべての差分ベースの出力タイプ (例: --stat によって生成される出力タイプ) に影響することに注意してください。
等々
-- ログサイズ
「ログサイズ」という行を含めます各コミットの出力に「」が表示されます。ここで、 は
そのコミットのメッセージの長さ (バイト単位)。 ログを読み取るツールの高速化を目的としています。
事前にスペースを割り当てられるようにすることで、git ログ出力からのメッセージを取得します。
-L 、 : 、-L : :
によって与えられるライン範囲の進化を追跡します。 、 " (または関数名
正規表現) 以内。 パス仕様リミッターを指定することはできません。 これは
現在、単一のリビジョンから開始するウォークに制限されています。つまり、指定できるのは
XNUMX 個または XNUMX 個の正のリビジョン引数。 このオプションは複数回指定できます。
と次のいずれかの形式を取ることができます。
・ 番号
もしもまたは数値の場合、絶対行番号 (行数) を指定します。
1年から)。
· /正規表現/
このフォームは、指定された POSIX 正規表現に一致する最初の行を使用します。 もしもです
正規表現の場合、前の -L 範囲があればその末尾から検索します。それ以外の場合は、
ファイルの先頭から。 もしも「^/regex/」の場合、先頭から検索します。
ファイル。 もしもが正規表現の場合、次で指定された行から検索します。 。
· +オフセットまたは-オフセット
これは次の場合にのみ有効です前後の行数を指定します
によって与えられた行。
もしも ": ” の代わりに与えられます。 と、それは正規表現です
これは、一致する最初の funcname 行からの範囲を示します。 、 以下
次の関数名の行。 「: ” は、前の -L 範囲の末尾から検索します。
任意、それ以外の場合はファイルの先頭から。 「^: 」はファイルの先頭から検索します。
指定されたリビジョン範囲内のコミットのみを表示します。 いいえの場合は
指定すると、デフォルトで HEAD (つまり、現在のコミットに至るまでの全履歴) になります。
Origin..HEAD は、現在のコミット (つまり HEAD) から到達可能なすべてのコミットを指定します。
しかし、起源からではありません。 スペルの完全なリストについては、 を参照してください。
指定 範囲 のセクション ギトレヴィジョンズとします。
[--] ...
指定されたファイルと一致する方法を説明するのに十分なコミットのみを表示します。
パスができるようになりました。 見る 沿革 単純化 詳細およびその他については以下をご覧ください
簡略化モード。
パスをオプションや
混乱が生じた場合は、改訂範囲を確認してください。
コミット 制限する
特別な表記法を使用してリストする必要があるコミットの範囲を指定することに加えて、
説明で説明されているように、追加のコミット制限が適用される場合があります。
一般に、より多くのオプションを使用すると、出力がさらに制限されます (例: --since= に制限する
より新しいコミット--grep= とともに使用します。 コミットに対するさらなる制限
ログ メッセージに一致する行がある)、特に断りのない限り。
これらは、コミットの順序付けとフォーマットのオプションの前に適用されることに注意してください。
- 逆行する。
- 、-n 、 --max-count=
出力するコミットの数を制限します。
--スキップ=
スキップ 数 コミット出力の表示を開始する前にコミットします。
--since= 、 --after=
特定の日付よりも新しいコミットを表示します。
--まで= 、--前=
特定の日付より古いコミットを表示します。
--著者= 、--コミッター=
コミット出力を、作成者/コミッターのヘッダー行が一致するものに制限します。
指定されたパターン(正規表現)。 複数の --author= を使用した場合、コミットします
指定されたパターンのいずれかに一致する作成者が選択されます (複数の場合も同様)
--コミッター= )。
--grep-reflog=
コミット出力を、指定されたパターンに一致する reflog エントリを持つコミットに制限する
(正規表現)。 複数の --grep-reflog を使用すると、その reflog メッセージをコミットします
指定されたパターンのいずれかに一致するものが選択されます。 そうでない場合、このオプションを使用するとエラーになります。
--walk-reflogs が使用されています。
--grep=
コミット出力を、指定されたパターンに一致するログメッセージを持つものに制限します
(正規表現)。 複数の --grep= を使用する場合、誰のメッセージをコミットするか
指定されたパターンのいずれかに一致するものが選択されます (ただし、--all-match を参照)。
--show-notes が有効な場合、メモからのメッセージは次のように照合されます。
ログメッセージの一部。
--すべて一致
コミット出力を、指定されたすべての --grep に一致するものに制限します。
少なくとも XNUMX つと一致します。
--invert-grep
パターンに一致しないログ メッセージを含むコミット出力を制限する
--grep= で指定。
-i、--regexp-ignore-case
大文字と小文字を区別せずに、正規表現の制限パターンと一致します。
-基本-正規表現
制限パターンは基本的な正規表現であると考えてください。 これがデフォルトです。
-E、--拡張正規表現
制限パターンは、
デフォルトの基本的な正規表現。
-F、--固定文字列
制限パターンは固定文字列であると考えてください (パターンをパターンとして解釈しないでください)
正規表現)。
--perl-正規表現
制限パターンは Perl 互換の正規表現であると考えてください。 必要
コンパイルされるlibpcre。
--削除-空
指定されたパスがツリーから消えたら停止します。
--マージ
マージコミットのみを出力します。 これは --min-parents=2 とまったく同じです。
--マージなし
複数の親を持つコミットを出力しないでください。 これはまったく同じです
--max-parents=1。
--min-parents= 、 --max-parents= 、 --no-min-parents、 --no-max-parents
少なくとも (または最大でも) その数の親コミットを持つコミットのみを表示します。 で
特に、 --max-parents=1 は --no-merges と同じ、 --min-parents=2 は --no-merges と同じです。
--マージします。 --max-parents=0 はすべての root コミットを与え、--min-parents=3 はすべてのタコを与えます
マージします。
--no-min-parents および --no-max-parents は、これらの制限を (制限なしに) 再度リセットします。
同等の形式は --min-parents=0 (コミットには 0 個以上の親があります) および
--max-parents=-1 (負の数は上限がないことを示します)。
--最初の親
マージ コミットを確認したら、最初の親コミットのみをたどります。 このオプションにより、
特定のトピック ブランチの展開を表示するときに概要がわかりやすくなります。
トピック ブランチへのマージは、上流の更新に合わせて調整するだけの傾向があります。
このオプションを使用すると、取り込まれた個々のコミットを無視できます。
このようなマージによって履歴に追加されます。 --bisect と組み合わせることはできません。
- いいえ
の意味を逆転させます。 ^ 後続のすべてのリビジョンの接頭辞 (またはその欠如)
指定子、次の --not まで。
- すべて
refs/ 内のすべての参照がコマンドラインに次のようにリストされているかのように見せかけます。 .
--枝[= 】
refs/heads 内のすべての参照がコマンドラインに次のようにリストされているかのように見せかけます。 .
If が与えられた場合、ブランチを指定されたシェル グロブに一致するブランチに制限します。 パターンの場合
欠けています ?, *または [, /* 最後には暗示されています。
--タグ[= ]
refs/tags 内のすべての ref がコマンドラインに次のようにリストされているかのように見せかけます。 。 場合
が指定されている場合、タグは指定されたシェル グロブに一致するものに制限されます。 柄が欠けている場合 ?,
*または [, /* 最後には暗示されています。
--リモート[= 】
refs/remotes 内のすべての ref がコマンド ラインに次のようにリストされているかのように見せかけます。 .
If が指定されている場合、リモート追跡ブランチを指定されたシェルに一致するものに制限します
グロブ。 柄が欠けている場合 ?, *または [, /* 最後には暗示されています。
--glob=
すべての参照がシェル グロブに一致するかのように振る舞う にリストされています
コマンドラインとして 。 リーディング 参照/が存在しない場合は、自動的に先頭に追加されます。 もし
パターンが欠けている ?, *または [, /* 最後には暗示されています。
-除外=
一致する参照を含めない 次の--all、-branches、-tags、
--remotes、または--globはそれ以外の場合に考慮します。 このオプションの繰り返しは蓄積されます
次の--all、-branches、-tags、-remotes、または--globまでの除外パターン
オプション(他のオプションまたは引数は累積パターンをクリアしません)。
与えられたパターンは、refs / heads、refs / tags、またはrefs / remotesで始まるべきではありません。
それぞれ--branches、-tags、または--remotesに適用され、で始まる必要があります
--globまたは--allに適用された場合のrefs /。 末尾が /* 意図されている、それは与えられなければならない
明示的に
--reflog
reflogs で言及されているすべてのオブジェクトがコマンド ラインに次のようにリストされているかのように見せかけます。
。
-無視-欠落
入力に無効なオブジェクト名が含まれているのを確認すると、不正な入力がなかったかのように振る舞う
与えられた。
-- 二等分
不正な二分化 ref refs/bisect/bad がリストされているかのように見せかけ、
コマンド ラインで --not と適切な二分化 refs refs/bisect/good-* が続きます。
--first-parent と組み合わせることはできません。
--標準入力
に加え コマンドラインにリストされている場合は、標準から読み取ります。
入力。 もし -- 区切り文字が表示された場合は、コミットの読み取りを停止し、パスの読み取りを開始します。
結果を制限します。
--桜マーク
--cherry-pick (以下を参照) と似ていますが、同等のコミットを省略するのではなく = でマークします。
それらと、+ が付いた不等なもの。
--チェリーピック
「反対側」の別のコミットと同じ変更を導入するコミットを省略します。
コミットのセットが対称的な差で制限されている場合。
たとえば、A と B の XNUMX つのブランチがある場合、すべてのコミットを一覧表示する通常の方法です。
片側のみ --left-right が付いています (以下の説明の例を参照)
--left-right オプションの)。 ただし、厳選されたコミットが表示されます
他のブランチから (たとえば、「b の 3 番目」はブランチ A から選択される可能性があります)。
このオプションを使用すると、そのようなコミットのペアは出力から除外されます。
--左のみ、--右のみ
対称範囲のそれぞれの側のコミットのみをリストします。つまり、コミットのみをリストします。
< とマークされます。 > --left-right による。
たとえば、 --cherry-pick --right-only A...B は、B からのコミットを省略します。
A または A のコミットとパッチに相当します。つまり、これは + コミットをリストします。
git Cherry A B から。より正確には、 --cherry-pick --right-only --no-merges は、
正確なリスト。
- チェリー
--right-only --cherry-mark --no-merges の同義語。 出力を制限するのに役立ちます
私たちの側のコミットを確認し、反対側に適用されたコミットをマークします。
git log --cherryupstream...mybranch でフォークされた履歴、git Cherry に似ています
上流の私のブランチ。
-g、--walk-reflogs
コミット祖先チェーンをたどる代わりに、最新のエントリから reflog エントリをたどります。
XNUMX人から年長者まで。 このオプションを使用する場合、除外するコミットを指定することはできません
(あれは、 ^コミット, コミット1..コミット2, コミット1...コミット2 表記は使用できません)。
oneline 以外の --pretty 形式を使用すると (明らかな理由により)、出力が次のようになります。
reflog から取得した XNUMX 行の情報を追加します。 デフォルトでは、 commit@{Nth}
出力では表記が使用されます。 開始コミットを次のように指定した場合 commit@{今},
出力でも使用されます commit@{タイムスタンプ} 代わりに表記法。 --pretty=oneline では、
コミット メッセージには、同じ行にこの情報が接頭辞として付けられます。 このオプションではできません
--reverse と組み合わせることができます。 こちらも参照 git-reflogとします。
- マージ
マージが失敗した後、競合があり、存在しないファイルを参照する参照を表示します。
すべてのヘッドがマージします。
- 境界
除外された境界コミットを出力します。 境界コミットには接頭辞として - が付きます。
沿革 単純化
場合によっては、コミットなど、履歴の一部のみに興味がある場合があります。
特定のものを変更する。 しかし、次の XNUMX つの部分があります。 沿革 単純化、1部
コミットの選択と、それを行う方法です。さまざまな戦略があるためです。
歴史を単純化します。
次のオプションは、表示するコミットを選択します。
指定された内容の変更をコミットしますが選択されます。
--装飾による単純化
何らかのブランチまたはタグによって参照されるコミットが選択されます。
意味のある履歴を提供するために、追加のコミットを表示できることに注意してください。
次のオプションは、単純化の実行方法に影響します。
デフォルトモード
履歴を、ツリーの最終状態を説明する最も単純な履歴に単純化します。
最終結果が同じであれば、いくつかの側枝を枝刈りするため、最も単純です (つまり、
同じ内容のブランチをマージします)
--全履歴
デフォルト モードと同じですが、一部の履歴は削除されません。
- 密集
選択したコミットのみが表示され、さらに意味のある履歴を持つコミットもいくつか表示されます。
--スパース
簡略化された履歴内のすべてのコミットが表示されます。
--単純化マージ
--full-history への追加オプションにより、結果として得られるマージからいくつかの不必要なマージを削除します。
このマージに寄与する選択されたコミットがないため、履歴が表示されません。
--祖先パス
表示するコミットの範囲が指定された場合 (例: コミット1..コミット2 or コミット2 ^コミット1),
間の祖先チェーン上に直接存在するコミットのみを表示します。 コミット1
コミット2、つまり、両方とも子孫であるコミットです。 コミット1、そしてその先祖 コミット2.
より詳細な説明は次のとおりです。
として foo を指定したとします。 。 foo を変更するコミットを !TREESAME と呼びます。
そして残りはTREESAME。 (foo でフィルタリングされた diff では、それらは異なっていても同等に見えますが、
それぞれ。)
以下では、常に同じ履歴例を参照して説明します。
簡略化設定の違い。 ファイルをフィルタリングしていると仮定します。
このコミットグラフの foo :
.-A---M---N---O---P---Q
/ / / / / /
IBCDEY
\ / / / / /
「-------------」X
履歴 A---Q の水平線は、各マージの最初の親とみなされます。 の
コミットは次のとおりです。
· I は最初のコミットであり、foo がコンテンツ「asdf」で存在し、ファイル quux が存在します。
コンテンツ「quux」とともに存在します。 初期コミットは空のツリーと比較されるため、
!ツリーサメ。
· A では、foo には「foo」だけが含まれます。
· B には A と同じ変更が含まれています。そのマージ M は簡単なので、すべてに対して TREESAME になります。
親。
· C は foo を変更しませんが、N をマージすると "foobar" に変更されるため、TREESAME ではありません。
どんな親にも。
· D は foo を「baz」に設定します。 そのマージ O は、N と D の文字列を「foobarbaz」に結合します。
つまり、どの親にとっても TREESAME ではありません。
· E は quux を「xyzzy」に変更し、そのマージ P は文字列を「quux xyzzy」に結合します。 Pは
TREESAME は O に送信されますが、E には送信されません。
· X は新しいファイル側を追加した独立したルート コミットであり、Y はそれを変更しました。 Yは
X に対する TREESAME。そのマージ Q は P にサイドを追加し、Q は P に対して TREESAME ですが、Y に対してはそうではありません。
rev-list は、履歴を逆方向にたどり、コミットを含めるか除外しますか。
--full-history および/または親の書き換え (--parents または --children 経由) が使用されます。 の
以下の設定が可能です。
デフォルトモード
コミットは、どの親に対しても TREESAME でない場合に含まれます (ただし、これは親に対して TREESAME でない場合もあります)。
変更されました。以下の --sparse を参照してください)。 コミットがマージであり、XNUMX に対して TREESAME だった場合
親の場合は、その親のみをフォローします。 (TREESAMEの親が複数いる場合でもフォロー
そのうちの XNUMX 人だけです。)それ以外の場合は、すべての保護者に従います。
この結果:
.-A---N---O
/ //
私--------D
TREESAME 親 (利用可能な場合) のみに従うというルールがどのように削除されたかに注目してください。
完全に検討から。 C は N 経由で検討されましたが、TREESAME です。 ルートコミット
は空の木にたとえられるので、I は !TREESAME です。
親子関係は --parents でのみ表示されますが、これは
コミットはデフォルト モードで選択されているため、親行を表示しています。
--親の書き換えを行わない全履歴
このモードは XNUMX つの点でデフォルトと異なります。マージのすべての親を常に追跡します。
たとえそれがそのうちのXNUMX人にとってTREESAMEであっても。 マージの複数の側に問題がある場合でも、
これは、マージ自体が含まれることを意味するものではありません。 の中に
たとえば、
IABNDOPQ
M は両親にとって TREESAME であるため除外されました。 E、C、Bは全員歩いていましたが、
ただし、B だけが !TREESAME だったので、他は表示されません。
親を書き換えないと、実際には、
コミット間の親子関係があるため、切断されて表示されます。
--親の書き換えを含む全履歴
通常のコミットは、!TREESAME の場合にのみ含まれます (これは変更できますが、
以下の --sparse を参照してください)。
マージは常に含まれます。 ただし、親リストは次のように書き換えられます。
親として、それ自体に含まれていないコミットを削除します。 この結果、
.-A---M---N---O---P---Q
/ / / / /
IB/D/
\ / / / /
「-------------」
上記を書き換えずに --full-history と比較します。 E が削除されたことに注意してください。
これは TREESAME ですが、P の親リストが E の親 I を含むように書き換えられました。
CとN、X、Y、Qでも同じことが起こりました。
上記の設定に加えて、TREESAME が包含に影響を与えるかどうかを変更できます。
- 密集
ウォークされたコミットは、どの親に対しても TREESAME でない場合に含まれます。
--スパース
ウォークされたすべてのコミットが含まれます。
--full-history を指定しない場合でも、マージが簡素化されることに注意してください。
は TREESAME です。その XNUMX つだけを追跡するため、マージの他の側は決して追跡されません。
歩いた。
--単純化マージ
まず、親の書き換えを伴う --full-history と同じ方法で履歴グラフを構築します。
実行します (上記を参照)。
次に、次に従って、最終履歴内の各コミット C をその置換 C' に単純化します。
次のルール:
・C'をCに設定します。
· C' の各親 P をその単純化 P' に置き換えます。 その過程でドロップします
他の親の祖先である親、または root である親が TREESAME をコミットする
空のツリーを作成し、重複を削除します。ただし、重複するすべての親を削除しないように注意してください。
私たちはTREESAMEです。
· この親の書き換え後、C' がルートまたはマージ コミット (1 または >XNUMX を持つ) の場合
親)、境界コミット、または !TREESAME の場合は残ります。 それ以外の場合は置き換えられます
唯一の親と。
この効果は、親を持つ --full-history と比較することで最もよくわかります。
書き直し。 例は次のようになります。
.-A---M---N---O
/ //
IBD
\ / /
「---------」
--full-history との N、P、Q の主な違いに注意してください。
· N の親リストは、もう一方の親 M の祖先であるため、I を削除しました。
それでもNが残ったのは、!TREESAMEだからです。
· P の親リストも同様に I を削除しました。 その後、P は完全に削除されました。
親が XNUMX つあり、TREESAME です。
· Q の親リストには Y が X に簡略化されていました。その後、X は削除されました。
木の根。 その後、Q は完全に削除されました。これは、Q には XNUMX つの親があり、
木サメ。
最後に、XNUMX 番目の簡略化モードが利用可能です。
--祖先パス
表示されるコミットを、「from」間の祖先チェーン上に直接あるものに制限します。
「to」は指定されたコミット範囲内のコミットです。 つまり、次のコミットのみを表示します。
「to」コミットの祖先と「from」コミットの子孫。
使用例として、次のコミット履歴を考えてみましょう。
D---E--------F
/ \ \
B---C---G---H---I---J
/\
A------K---------------L--M
レギュラー DM M の先祖であるコミットのセットを計算しますが、
これは、歴史に何が起こったかを確認するのに役立ちます。
「M が持っていて D には存在しなかったもの」という意味で、D から M につながります。
この例の結果は、A と B (および D 自体) を除くすべてのコミットになります。
コース)。
M のどのコミットが、によってもたらされたバグで汚染されているかを調べたいとき。
D であり、修正が必要ですが、次のサブセットのみを表示したい場合があります。 DM そのアール
実際には D の子孫、つまり C と K を除いたものです。これはまさに
--ancestry-path オプションはそうします。 適用されるのは、 DM 範囲を指定すると、次のようになります。
E-----F
\\
ぐ---ひ---い---J
\
L--M
--simplify-by-decoration オプションを使用すると、全体像のみを表示できます。
タグによって参照されないコミットを省略することによって、履歴のトポロジを作成します。 コミットとは、
!TREESAME としてマークされます (つまり、履歴簡略化ルールの記述後に保持されます)
上記) (1) タグによって参照されている場合、または (2) パスの内容が変更されている場合
コマンドラインで与えられます。 他のすべてのコミットは TREESAME としてマークされます (
簡略化してあります)。
コミット 購入
デフォルトでは、コミットは新しい順に表示されます。
--日付順
すべての子が表示される前に親は表示されませんが、それ以外の場合はコミットが表示されます。
コミットのタイムスタンプの順序。
-- 作成日順
すべての子が表示される前に親は表示されませんが、それ以外の場合はコミットが表示されます。
作成者のタイムスタンプの順序。
--トポオーダー
すべての子が表示される前に親を表示せず、コミットを表示しないようにします。
複数の歴史が混在している。
たとえば、コミット履歴は次のようになります。
---1---2----4----7
\\
3----5----6----8---
ここで、数字はコミット タイムスタンプ、git rev-list、およびその友達の順序を示します。
--date-order はタイムスタンプ順にコミットを表示します: 8 7 6 5 4 3 2 1。
--topo-order を使用すると、8 6 5 3 7 4 2 1 (または 8 7 4 2 6 5 3 1) が表示されます。 少し古い
XNUMX つのコミットの表示を避けるために、コミットは新しいコミットより前に表示されます。
並行した開発トラックが混在しています。
- 逆行する
コミットを逆の順序で出力します。 --walk-reflogs と組み合わせることはできません。
オブジェクト トラバーサル
これらのオプションは主に、Git リポジトリのパッキングを対象としています。
--no-walk[=(並べ替え|未並べ)]
指定されたコミットのみを表示しますが、その先祖は走査しません。 これは効果がありません
範囲が指定されている場合。 引数 unsorted が指定された場合、コミットは次のように表示されます。
コマンドラインで与えられた順序。 それ以外の場合 (ソートされた場合、または引数がなかった場合)
指定されている場合)、コミットはコミット時間の新しい順に表示されます。 ありえない
--graph と組み合わせます。
-- 歩く
以前の --no-walk をオーバーライドします。
コミット 書式設定
--かなり[= ]、--format=
コミット ログの内容を指定された形式で整形出力します。 することができます
一つ ワンライン, 短い, ミディアム, 全体像を, ふっくら, メール, 生, フォーマット:
tフォーマット:。 時 上記のどれでもない、そして %プレースホルダー その中で、それ
あたかものように動作する --pretty=tformat: 与えられた。
各形式の詳細については、「きれいな形式」セクションを参照してください。 いつ
= 部分は省略されており、デフォルトは ミディアム.
注: リポジトリ設定でデフォルトの整った形式を指定できます (「
git-config(1))。
--abbrev-コミット
完全な 40 バイトの XNUMX 進数のコミット オブジェクト名を表示する代わりに、
部分的な接頭辞。 デフォルト以外の桁数は「--abbrev=」で指定できます。 」
(表示されている場合は、diff 出力も変更されます)。
これにより、「--pretty=oneline」を使用している人にとって、はるかに読みやすくなります。
80列端子。
--no-abbrev-commit
完全な 40 バイトの XNUMX 進数のコミット オブジェクト名を表示します。 これにより --abbrev-commit が無効になり、
「--oneline」など、それを暗示するオプション。 また、
log.abbrevコミット 変数に保存します.
--オンライン
これは、一緒に使用される「--pretty=oneline --abbrev-commit」の短縮形です。
--エンコーディング=
コミット オブジェクトは、ログ メッセージに使用されるエンコーディングをそのエンコーディングに記録します。
ヘッダ; このオプションを使用すると、コマンドにコミット ログ メッセージを再コーディングするように指示できます。
ユーザーが好むエンコーディングで。 配管コマンド以外の場合、これはデフォルトで次のようになります。
UTF-8。 オブジェクトが X でエンコードされていると主張し、X で出力している場合、
オブジェクトをそのまま出力します。 これは、元のシーケンスに無効なシーケンスがあることを意味します。
commit は出力にコピーされる場合があります。
--メモ[= 】
メモを表示します(を参照) git-notes(1)) コミットを表示するときにコミットに注釈を付けます
ログメッセージ。 これは、git log、git show、および git whatchanged コマンドのデフォルトです
コマンドラインに --pretty、--format、または --oneline オプションが指定されていない場合。
デフォルトでは、表示されるノートは、 core.notesRef
メモ.displayRef 変数 (または対応する環境オーバーライド)。 見る git-config(1)
のガイドをご参照ください。
オプション付き 引数、デフォルトのノートの代わりにこのノート参照を表示します
参照。 ref が refs/notes/ で始まる場合は、完全な refname を指定します。 それがいつ
Notes/、refs/ で始まり、それ以外の場合は refs/notes/ が接頭辞として付けられ、完全名が形成されます。
参照者。
複数の --notes オプションを組み合わせて、どのノートを表示するかを制御できます。
例: 「--notes=foo」は「refs/notes/foo」のノートのみを表示します。 "--notes=foo
--notes" は、"refs/notes/foo" とデフォルトのノート ref の両方のノートを表示します。
--メモなし
メモを表示しないでください。 これは、リストをリセットすることにより、上記の --notes オプションを無効にします。
ノートが表示されるノート参照。 オプションは、上で指定された順序で解析されます。
コマンドラインなので、たとえば「--notes --notes=foo --no-notes --notes=bar」のみが表示されます
「refs/notes/bar」からのメモ。
--show-notes[= ]、--[no-]標準ノート
これらのオプションは廃止されました。 代わりに、上記の --notes/-no-notes オプションを使用してください。
--署名を表示
署名を gpg --verify に渡して、署名付きコミット オブジェクトの有効性を確認します。
そして出力を表示します。
-- 相対日付
--date=relative の同義語。
--日付=
を使用する場合など、人間が判読できる形式で表示される日付に対してのみ有効です。
- かわいい。 log.date 構成変数は、log コマンドの --date のデフォルト値を設定します。
オプション。 デフォルトでは、日付は元のタイムゾーン (コミッターのタイムゾーンまたは
著者のもの)。 -local が形式 (iso-local など) に追加される場合、ユーザーのローカル
代わりにタイムゾーンが使用されます。
--date=relative は、現在時刻を基準とした日付を表示します (例: 「2 時間前」)。 の
-local オプションは、--raw または --relative と一緒に使用することはできません。
--date=local は、--date=default-local のエイリアスです。
--date=iso (または --date=iso8601) は、ISO 8601 のような形式でタイムスタンプを表示します。 の
厳密な ISO 8601 形式との違いは次のとおりです。
· T 日付/時刻区切り文字の代わりにスペース
· 時間とタイムゾーンの間のスペース
· タイムゾーンの時間と分の間にコロンはありません
--date=iso-strict (または --date=iso8601-strict) は、厳密な ISO 8601 のタイムスタンプを表示します。
形式でダウンロードすることができます。
--date=rfc (または --date=rfc2822) は、多くの場合、RFC 2822 形式でタイムスタンプを表示します。
電子メールメッセージ。
--date=short は、YYYY-MM-DD 形式で日付のみを表示し、時刻は表示しません。
--date=raw は、内部の生の Git 形式 %s %z 形式で日付を表示します。
--date=format:... 形式をシステム strftime に供給します。 --date=format:%c を使用します
システム ロケールの優先形式で日付を表示します。 strftime マニュアルを参照してください。
形式プレースホルダーの完全なリスト。 -local を使用する場合、正しい構文は次のとおりです。
--date=format-local:....
--date=default はデフォルトの形式で、--date=rfc2822 に似ていますが、いくつかの点が異なります。
例外:
· 曜日の後にカンマはありません
· ローカルタイムゾーンが使用される場合、タイムゾーンは省略されます
- 両親
コミットの親も出力します (「commitparent...」の形式で)。 も有効にします
親の書き換え、参照 沿革 単純化 を参照してください。
- 子供
コミットの子も出力します (「commit child...」の形式で)。 も有効にします
親の書き換え、参照 沿革 単純化 を参照してください。
- 左右
対称 diff のどちら側からコミットに到達できるかをマークします。 左からコミットします
側面には < が、右側には > が接頭辞として付けられます。 --boundary と組み合わせると、
これらのコミットには接頭辞として - が付きます。
たとえば、次のトポロジがあるとします。
y---b---b ブランチ B
/ \ /
/。
/ / \
o---x---a---a ブランチ A
次のような出力が得られます。
$ git rev-list --left-right --boundary --pretty=oneline A...B
>bbbbbbb... b の 3 番目
>bbbbbbb... b で 2 番目
<aaaaaaa... 3 番目
<aaaaaaa... a で 2 位
-yyyyyyy... b の 1 番目
-xx... 上の 1 番目
- グラフ
左側にコミット履歴のテキストベースのグラフィカル表現を描画します。
出力の。 これにより、コミットの間に余分な行が印刷される可能性があります。
グラフ履歴が適切に描画されるようにします。 --no-walk と組み合わせることはできません。
これにより、親の書き換えが可能になります。 を参照してください。 沿革 単純化 を参照してください。
これはデフォルトで --topo-order オプションを意味しますが、--date-order オプションも
指定されること。
--show-linear-break[= 】
--graph が使用されていない場合、すべての履歴ブランチがフラット化されるため、
XNUMX つの連続するコミットが線形ブランチに属していないことを確認してください。 このオプション
その場合、それらの間に障壁を置きます。 もしが指定されている場合、それは
デフォルトの文字列の代わりに表示される文字列。
デフ 書式設定
以下に挙げるのは、diff 出力のフォーマットを制御するオプションです。 そのうちのいくつかは、
に固有 git-rev-リスト(1) ただし、他の diff オプションを指定することもできます。 見る git-diff-
ファイル(1) その他のオプションについては。
-c
このオプションを使用すると、マージ コミットの差分出力にそれぞれの相違点が表示されます。
ペアごとの差分を表示する代わりに、マージ結果の親を同時に表示します。
親と結果の間で一度に XNUMX つずつ。 さらに、次のファイルのみがリストされます。
すべての親から変更されました。
--cc
このフラグは -c オプションを暗黙的に示し、省略することでパッチ出力をさらに圧縮します。
親のコンテンツに XNUMX つのバリアントとマージしか含まれていない、興味のないハンク
結果は、変更せずにそのうちの XNUMX つを選択します。
-m
このフラグにより、マージ コミットは通常のコミットと同様に完全な差分を表示します。 それぞれに
親をマージすると、別のログ エントリと差分が生成されます。 唯一の例外は、
--first-parent オプションが指定されている場合、最初の親に対する diff が表示されます。 その中で
この場合、出力はマージによってもたらされた変更を表します。 に 当時の
ブランチ。
-r
再帰的な差分を表示します。
-t
diff 出力にツリー オブジェクトを表示します。 これは -r を意味します。
PRETTY 書式
コミットがマージであり、プリティフォーマットがそうでない場合 ワンライン, メール or 生、
の前に追加行が挿入されます 著者: ライン。 この行は「Merge:」で始まり、
祖先コミットの sha1 がスペースで区切られて出力されます。 リストされていることに注意してください
コミットは必ずしも 直接 制限がある場合は親がコミットします
あなたの歴史の見方: たとえば、ある問題に関連する変更のみに興味がある場合
特定のディレクトリまたはファイル。
いくつかの組み込み形式があり、追加の形式を定義できます。
かわいい。 config オプションを別の形式名、または フォーマット: 文字列として
以下で説明します(を参照) git-config(1))。 組み込みフォーマットの詳細は次のとおりです。
· ワンライン
可能な限りコンパクトになるように設計されています。
· 短い
専念
著者:
· ミディアム
専念
著者:
日にち:
· 全体像を
専念
著者:
専念:
· ふっくら
専念
著者:
著者日付:
専念:
コミット日:
· メール
から
から:
日にち:
件名: [パッチ]
· 生
当学校区の 生 format は、コミット オブジェクトに保存されているとおりにコミット全体を表示します。
特に、--abbrev かどうかに関係なく、SHA-1 が完全に表示されます。
--no-abbrev が使用され、 両親 情報は、真の親コミットを示します。
グラフトや履歴の単純化を考慮して。 この形式は影響を与えることに注意してください
コミットの表示方法は異なりますが、git log などの差分は表示されません。
- 生。 完全なオブジェクト名を生の差分形式で取得するには、--no-abbrev を使用します。
· フォーマット:
当学校区の フォーマット: 形式を使用すると、表示する情報を指定できます。
これは printf 形式と少し似ていますが、注目すべき例外は、
改行あり %n \n.
例えば、 形式:「 著者 of %h ました %an、 %ar%n タイトル ました >>%s<<%n" 表示されます
このようなもの:
fe6e0ee の作者は Junio C Hamano です、23 時間前
タイトルは >>t4119: 自動計算のテスト -p でした。 従来の差分入力の場合。<
プレースホルダーは次のとおりです。
· %H: コミットハッシュ
· %h: 短縮されたコミットハッシュ
· %T: ツリーハッシュ
· %t: 短縮されたツリーハッシュ
· %P: 親ハッシュ
· %p: 省略された親ハッシュ
· %an:著者名
· %aN: 作成者名 (.mailmap については、「 gitショートログ(1)または git-blame(1))
· %ae: 著者のメールアドレス
· %aE: 作成者の電子メール (.mailmap に関しては、を参照してください) gitショートログ(1)または git-blame(1))
· %広告: 作成者の日付 (形式は --date= オプションに従う)
· %広告: 著者の日付、RFC2822 スタイル
· %ar: 著者の日付、相対的
· %で: 作成者の日付、UNIX タイムスタンプ
· %ai: 著者の日付、ISO 8601 に似た形式
· %aI: 著者の日付、厳密な ISO 8601 形式
· %cn: コミッター名
· %cN: コミッター名 (.mailmap に関しては、「 gitショートログ(1)または git-blame(1))
· %ce: コミッターのメールアドレス
· %cE: コミッターの電子メール (.mailmap に関しては、を参照してください) gitショートログ(1)または git-blame(1))
· %CD: コミッターの日付 (形式は --date= オプションに従う)
· %CD: コミッターの日付、RFC2822 スタイル
· %cr: コミッター日付、相対日付
· %ct: コミッターの日付、UNIX タイムスタンプ
· %ci: コミッターの日付、ISO 8601 に似た形式
· %cI: コミッターの日付、厳密な ISO 8601 形式
· %d: ref 名 (--decorate オプションのような) git-ログ(1)
· %D: 「(」、「)」で囲まれていない参照名。
· %e: エンコーディング
· %s: 主題
· %f: サニタイズされた件名、ファイル名に適しています
· %b: 体
· %B: raw body (アンラップされたサブジェクトとボディ)
· %N: コミットノート
· %GG: 署名付きコミットに対する GPG からの生の検証メッセージ
· %G?: 良い署名には「G」、悪い署名には「B」、良い署名には「U」を表示します。
信頼できない署名、および署名なしを表す「N」
· %GS: 署名されたコミットの署名者の名前を表示します。
· %GK: 署名付きコミットの署名に使用されるキーを表示します。
· %gD: reflog セレクター、例: refs/stash@{1}
· %gd: 短縮された reflog セレクター、例: stash@{1}
· %おやすみなさい: reflog アイデンティティ名
· %おやすみなさい: reflog ID 名 (.mailmap に関しては、「 gitショートログ(1)または ギット-
非難(1))
· %ge: reflog ID メール
· %gE: reflog ID 電子メール (.mailmap に関しては、を参照してください) gitショートログ(1)または ギット-
非難(1))
· %gs: reflog の件名
· %信用: 色を赤に切り替えます
· %Cグリーン: 色を緑色に切り替えます
· %Cブルー: 色を青に切り替えます
· %クレセット: カラーをリセット
· %C(...): color.branch.* 設定オプションで説明されている色の指定。 追加する
auto、最初はログ出力で色が有効になっている場合にのみ色を発光します。
(color.diff、color.ui、または --color によって、および
ターミナルに行く場合は前者)。 auto のみ (つまり %C(auto)) がオンになります
色が再び切り替わるまで、次のプレースホルダーで自動色付けが行われます。
· %m: 左、右、または境界マーク
· %n: 改行
· %%: 生 %
· %x00: XNUMX 進コードからバイトを出力します。
· %w([ [、 [、 ]]]): の -w オプションのように、行の折り返しを切り替えます。 ギット-
ショートログとします。
· %<( [,trunc|ltrunc|mtrunc]): 次のプレースホルダーが少なくとも N 列を取るようにします。
必要に応じて右側にスペースを埋め込みます。 オプションで先頭を切り詰めます
出力が N より長い場合は (ltrunc)、中間 (mtrunc)、または末尾 (trunc)
列。 切り捨ては N >= 2 の場合にのみ正しく機能することに注意してください。
· %<|( ): 次のプレースホルダーが少なくとも N 番目の列まで取得されるようにし、パディングします
必要に応じて右側にスペースを入力
· %>( ), %>|( ): に似ている %<( ), %<|( ) それぞれ、スペースを埋め込みます
左に
· %>>( ), %>>|( ): に似ている %>( ), %>|( ) ただし、
次のプレースホルダーは指定されたスペースよりも多くのスペースを必要とし、その左側にスペースがあります。
それらのスペースを使用してください
· %><( ), %><|( ): に似ている % <( ), %<|( ) それぞれ、ただし両方をパディングします
側面(つまり、テキストが中央に配置されます)
注意
一部のプレースホルダーは、リビジョン トラバーサル エンジンに指定された他のオプションに依存する場合があります。
たとえば、%g* reflog オプションは、そうでない限り空の文字列を挿入します。
reflog エントリを走査します (例: git log -g による)。 %d および %D プレースホルダーは次を使用します。
コマンドで --decorate がまだ指定されていない場合の「短い」装飾形式
ライン。
後ろに+(プラス記号)を付けると % プレースホルダーの場合は、すぐに改行が挿入されます
プレースホルダーが空ではない文字列に展開される場合に限り、展開前に実行されます。
後ろに-(マイナス記号)を付けると % プレースホルダーの直前の改行
プレースホルダーが空の文字列に展開される場合にのみ、展開は削除されます。
後ろに「 」(スペース)を入れると % プレースホルダーの直前にスペースが挿入されます
プレースホルダーが空ではない文字列に展開される場合にのみ展開されます。
· tフォーマット:
当学校区の tフォーマット: 形式はまったく同じように機能します フォーマット:ただし、「ターミネーター」を提供する点が異なります。
「区切り文字」セマンティクスの代わりにセマンティクスを使用します。 つまり、各コミットには
区切り文字ではなくメッセージ終了文字 (通常は改行) が追加される
エントリの間に配置されます。 これは、単一行形式の最後のエントリが
「oneline」形式と同様に、新しい行で適切に終了する必要があります。 ために
例:
$ git log -2 --pretty=format:%h 4da45bef \
| perl -pe '$_ .= " -- NO NEWLINE\n" /\n/' を除く
4da45be
7134973 -- 改行なし
$ git log -2 --pretty=tformat:%h 4da45bef \
| perl -pe '$_ .= " -- NO NEWLINE\n" /\n/' を除く
4da45be
7134973
さらに、% が含まれる認識できない文字列は、% が含まれているかのように解釈されます。
tformat: その前にあります。 たとえば、次の XNUMX つは同等です。
$ git log -2 --pretty=tformat:%h 4da45bef
$ git log -2 --pretty=%h 4da45bef
COMMON 違い OPTIONS
-p、-u、--patch
パッチを生成します (パッチの生成に関するセクションを参照)。
-s、--パッチなし
diff 出力を抑制します。 パッチを表示する git show などのコマンドに便利です。
デフォルト、または --patch の効果をキャンセルします。
-U 、 --unified=
差分を生成する通常の XNUMX 行ではなく、コンテキストを XNUMX 行に分割します。 -p を意味します。
- 生
コミットごとに、生の差分形式を使用して変更の概要を表示します。 「RAW」を参照してください。
「出力フォーマット」セクション git-差分(1)。 ログそのものを表示するのとは異なります
raw 形式で、これは --format=raw で実現できます。
--patch-with-raw
-p --raw の同義語。
-最小限
余分な時間を費やして、可能な限り最小の差分が生成されるようにしてください。
- 忍耐
「忍耐差分」アルゴリズムを使用して差分を生成します。
- ヒストグラム
「ヒストグラム diff」アルゴリズムを使用して差分を生成します。
--diff-algorithm={忍耐|最小限|ヒストグラム|マイヤーズ}
差分アルゴリズムを選択します。 バリエーションは次のとおりです。
デフォルト、マイヤーズ
基本的な貪欲差分アルゴリズム。 現在、これがデフォルトです。
最小限の
余分な時間を費やして、可能な限り最小の差分が生成されるようにしてください。
忍耐
パッチを生成するときは、「忍耐差分」アルゴリズムを使用します。
ヒストグラム
このアルゴリズムは、忍耐アルゴリズムを拡張して、「発生頻度の低い共通のメッセージをサポートする」
要素」。
たとえば、diff.algorithm 変数をデフォルト以外の値に設定した場合、
デフォルトのものを使用したい場合は、 --diff-algorithm=default オプションを使用する必要があります。
--stat[= [、 [、 ]]]
diffstat を生成します。 デフォルトでは、必要なだけのスペースが
ファイル名部分、残りがグラフ部分です。 最大幅のデフォルトは端子です
幅、またはターミナルに接続されていない場合は 80 列で、次のようにオーバーライドできます。 。
ファイル名部分の幅は、別の幅を与えることで制限できます。
カンマの後に。 グラフ部分の幅は、次のように制限できます。
--stat-graph-width= (統計グラフを生成するすべてのコマンドに影響します) または
diff.statGraphWidth= の設定(git format-patch には影響しません)。 を与えることで、
XNUMX番目のパラメータ、出力を最初のものに制限できます。 続く行
...もっとあれば。
これらのパラメータは、--stat-width= を使用して個別に設定することもできます。 、
--stat-name-width= および --stat-count= 。
--numstat
--stat と似ていますが、追加および削除された行数を XNUMX 進数で表示します。
パス名を省略せずに、マシンに優しいものにします。 バイナリファイルの場合、
0 0 と言う代わりに XNUMX を出力します。
--shortstat
変更された合計数を含む --stat 形式の最後の行のみを出力します。
ファイル、および追加および削除された行の数。
--dirstat[= 】
サブディレクトリごとの相対的な変更量の分布を出力します。 の
--dirstat の動作は、コンマ区切りのリストを渡すことでカスタマイズできます。
パラメーター。 デフォルトは diff.dirstat 構成変数によって制御されます。
(参照してください git-config(1))。 次のパラメータが使用可能です。
変更
から削除された行を数えることによって dirstat の数を計算します。
ソース、または宛先に追加されます。 これは純粋なコードの量を無視します
ファイル内の動き。 つまり、ファイル内の行を再配置することはできません。
他の変更と同様にカウントされます。 これはパラメータがない場合のデフォルトの動作です
与えられます。
ライン
通常の行ベースの差分分析を実行して dirstat の数値を計算します。
削除/追加された行数を合計します。 (バイナリ ファイルの場合は、64 バイトのチャンクをカウントします)
代わりに、バイナリ ファイルには行という自然な概念がないためです)。 これはさらに
--dirstat の動作は変更の動作より高価ですが、重要です
他の変更と同様に、ファイル内の行を再配置します。 結果の出力は次のとおりです。
他の --*stat オプションから得られるものと一致します。
ファイル
変更されたファイルの数を数えて dirstat の数を計算します。 それぞれが変わった
dirstat 分析ではファイル数は均等にカウントされます。 これが計算上最も安価です
--dirstat の動作。ファイルの内容をまったく調べる必要がないためです。
累積の
親ディレクトリの子ディレクトリ内の変更もカウントします。 ご了承ください
累積を使用すると、報告されるパーセンテージの合計が 100% を超える場合があります。 の
デフォルト (非累積) の動作は、非累積で指定できます。
パラメータに一致する最初のデバイスのリモートコントロール URL を返します。
整数パラメータはカットオフパーセント (デフォルトでは 3%) を指定します。 ディレクトリ
このパーセンテージ未満の変更は出力に表示されません。
例: 次の例では、変更されたファイルをカウントしますが、変更されたファイルの数が少ないディレクトリは無視されます。
変更されたファイルの総量の 10% を超え、子ディレクトリの数が累積されている
親ディレクトリ内: --dirstat=files,10,cumulative。
- まとめ
作成、名前変更などの拡張ヘッダー情報の要約を出力します。
そしてモードが変わります。
--stat 付きパッチ
-p --stat の同義語。
-z
コミットは改行ではなく NUL で区切ります。
また、--raw または --numstat が指定されている場合は、パス名を変更せず、NUL を使用してください。
出力フィールドのターミネータ。
このオプションを使用しない場合、各パス名の出力には TAB、LF、二重引用符、および
バックスラッシュ文字はそれぞれ \t、\n、\"、\\ に置き換えられ、パス名も
これらの置換が行われた場合は、二重引用符で囲まれます。
-名前のみ
変更されたファイルの名前のみを表示します。
--名前-ステータス
変更されたファイルの名前とステータスのみを表示します。 --diff-filter の説明を参照してください。
ステータス文字の意味に関するオプション。
--サブモジュール[= 】
サブモジュールの違いをどのように表示するかを指定します。 --submodule または --submodule=log の場合
与えられた、 ログ 形式が使用されます。 この形式では、次のような範囲内のコミットがリストされます。 ギット-
サブモジュール(1) 要約します。 --submodule オプションの省略または指定
--submodule=short、を使用します。 短い フォーマット。 この形式は単に名前を表示するだけです。
範囲の最初と最後でコミットします。 diff.submodule 経由で微調整可能
構成変数。
--色[= 】
色付きの差分を表示します。 --color (つまりなし =) は --color=always と同じです。
常に、決して、または自動のいずれかになります。
-無着色
カラー差分をオフにします。 --color=never と同じです。
--word-diff[= 】
を使用して単語の差分を表示します。 変更された単語を区切るために。 デフォルトでは、単語は
空白で区切られています。 以下の --word-diff-regex を参照してください。 のデフォルトは 平野,
次のいずれかでなければなりません:
カラー
色のみを使用して変更された単語を強調表示します。 --color を意味します。
平野
単語を [-removed-] および {+added+} として表示します。 から逃れようとしない
入力に区切り文字が含まれる場合、出力が曖昧になる可能性があります。
磁器
スクリプトの使用を目的とした特別な行ベースの形式を使用します。
追加/削除/未変更の実行は、通常の統一された diff 形式で出力されます。
行頭の +/-/` ` 文字で始まり、次まで
行の終わり。 入力内の改行は、行上のチルダ ~ で表されます。
独自の。
なし
Word diff を再度無効にします。
最初のモードの名前にもかかわらず、変更された部分を強調表示するために色が使用されていることに注意してください。
有効になっている場合、すべてのモードでパーツが表示されます。
--word-diff-regex=
使用空白以外の連続を考慮する代わりに、単語が何であるかを判断する
言葉になる。 また、すでに有効になっていない限り、--word-diff も暗黙的に指定されます。
重複しないすべての一致単語とみなされます。 間の何か
これらの一致は空白とみなされ、検索の目的では無視されます (!)
違い。 |[^[:space:]] を正規表現に追加して、
空白以外のすべての文字と一致することを確認してください。 改行を含む一致は次のとおりです。
改行で黙って切り捨てられます (!)。
たとえば、--word-diff-regex= です。 各文字を単語として扱います。
それに応じて、文字ごとに違いを示します。
正規表現は、diff ドライバーまたは構成オプションを介して設定することもできます。「」を参照してください。
git属性(1)または git-config(1)。 これを明示的に指定すると、あらゆる diff ドライバーがオーバーライドされます。
構成設定。 差分ドライバーは構成設定をオーバーライドします。
--color-words[= 】
--word-diff=color plus と同等 (正規表現が指定された場合)
--word-diff-regex= 。
--no-名前変更なし
構成ファイルでデフォルトで名前変更の検出が指定されている場合でも、名前変更の検出をオフにします。
そう。
- チェック
変更により空白エラーが発生した場合に警告します。 空白エラーとみなされるものは次のとおりです。
core.whitespace 設定によって制御されます。 デフォルトでは、末尾の空白は
(空白のみで構成される行を含む) および空白文字
行の最初のインデント内のタブ文字のすぐ後に続くものは、
空白エラーとみなされます。 問題が見つかった場合は、ゼロ以外のステータスで終了します。 いいえ
--exit-code と互換性があります。
--ws-error-highlight=
で指定された行の空白エラーを強調表示します。 で指定された色で
カラー.差分.ホワイトスペース。 は、古い、新しい、コンテキストのカンマ区切りのリストです。 いつ
このオプションは指定されておらず、新しい行の空白エラーのみが強調表示されます。 例えば
--ws-error-highlight=new,old 削除と追加の両方で空白エラーを強調表示します
線。 all は、old、new、context の省略形として使用できます。
--フルインデックス
最初の数文字の代わりに、画像の前後のブロブ全体を表示します。
パッチ形式の出力を生成するときに、「インデックス」行にオブジェクト名が表示されます。
- バイナリ
--full-index に加えて、git-apply で適用できるバイナリ diff を出力します。
-略語[= ]
diff-raw 形式の出力で完全な 40 バイトの XNUMX 進数のオブジェクト名を表示する代わりに
および diff-tree ヘッダー行には、部分的なプレフィックスのみが表示されます。 これは、
上記の --full-index オプションは、diff-patch の出力形式を制御します。 デフォルトではない
桁数は --abbrev= で指定できます。
-B[ ][/ ]、--break-rewrites[=[ ][/ ]]
完全な書き換え変更を削除と作成のペアにブレークします。 これでXNUMX人分になります
目的:
これは、一連のファイルではなくファイル全体の書き換えに相当する変更を行う方法に影響します。
削除と挿入が混在し、偶然一致するごく少数の行が含まれます。
テキスト的にはコンテキストとして、しかし古いものすべてを XNUMX 回削除し、その後に
すべての新しいものを XNUMX 回挿入します。数値 m は、-B のこの側面を制御します。
オプション (デフォルトは 60%)。 -B/70% は、オリジナルの 30% 未満が必要であることを指定します。
Git がそれを完全な書き換えとみなすため、結果に残ります (つまり、そうでない場合は、
結果として得られるパッチは、コンテキストと混合した一連の削除と挿入になります。
行)。
-M と一緒に使用すると、完全に書き換えられたファイルも、
名前の変更 (通常、-M は消えたファイルのみを名前変更のソースとして考慮します)、
数値 n は、-B オプションのこの側面を制御します (デフォルトは 50%)。 -B20%
追加および削除による変更が、変更の 20% 以上であることを指定します。
ファイルのサイズは、名前変更のソースとして選択される可能性があります。
別のファイル。
-M[ ]、--find-renames[= 】
差分を生成する場合は、各コミットの名前変更を検出して報告します。 以下のファイルの場合
履歴をたどる際の名前変更については、--follow を参照してください。 n を指定すると、
類似性インデックスのしきい値 (つまり、類似性インデックスと比較した追加/削除の量)
ファイルのサイズ)。 たとえば、-M90% は、Git が削除/追加ペアを
ファイルの 90% 以上が変更されていない場合は、名前を変更します。 % 記号がない場合、数値は次のようになります。
小数点を前に付けた分数として読み取られます。 つまり、-M5は0.5となり、
したがって、-M50% と同じになります。 同様に、-M05 は -M5% と同じです。 検出を制限するには
名前を正確に変更するには、-M100% を使用します。 デフォルトの類似性インデックスは 50% です。
-C[ ]、--find-copies[= 】
名前変更だけでなくコピーも検出します。 --find-copies-harder も参照してください。 n を指定すると、
-M と同じ意味です。
--find-copys-harder
パフォーマンス上の理由から、デフォルトでは、-C オプションは元のファイルが存在しない場合にのみコピーを検索します。
コピーのは同じ変更セットで変更されました。 このフラグによりコマンドが検査されます。
変更されていないファイルをコピー元の候補として選択します。 これは非常に高価です
大規模なプロジェクトでは操作できないため、慎重に使用してください。 複数の -C オプションを指定する
同じ効果があります。
-D、--不可逆削除
削除のプリイメージを省略します。つまり、ヘッダーのみを印刷し、ヘッダーとファイル間の差分は印刷しません。
プリイメージと/dev/null。 結果として得られるパッチは、パッチまたはパッチを適用することを目的としていません。
git 適用; これは、レビューに集中したい人専用です。
変更後の本文。 さらに、出力には明らかに十分な情報が不足しています。
このようなパッチを逆に、たとえ手動であっても適用するため、このオプションの名前が付けられています。
-B と併用すると、削除部分のプリイメージも省略されます。
ペアの削除/作成。
-l
-M および -C オプションには、O(n^2) の処理時間が必要です。ここで、n は、
潜在的な名前変更/コピーのターゲット。 このオプションにより、名前変更/コピー検出が実行されなくなります。
名前変更/コピー対象の数が指定された数を超えた場合。
--diff-filter=[(A|C|D|M|R|T|U|X|B)...[*]]
追加 (A)、コピー (C)、削除 (D)、変更 (M)、名前変更されたファイルのみを選択します
(R)、タイプ (つまり、通常のファイル、シンボリックリンク、サブモジュールなど) が変更されます (T)、
マージされていない (U)、不明である (X)、またはペアリングが壊れている (B)。 任意の組み合わせ
のフィルタ文字 (なしを含む) を使用できます。 *(All-or-none)を付加した場合
組み合わせに対して、他のパスに一致するファイルがあればすべてのパスが選択されます
比較の基準。 他の基準に一致するファイルがない場合は何も行われません
選択されています。
-S
指定された文字列の出現数を変更する相違点を探します。
ファイルの追加/削除など。 スクリプターの使用を目的としています。
これは、コードの正確なブロック (構造体など) を探していて、
そのブロックが最初に誕生してからの履歴を知るには、この機能を使用します
プリイメージ内の対象ブロックを繰り返し -S にフィードし、続行します。
ブロックの最初のバージョンを取得するまで。
-G
パッチテキストに一致する追加/削除された行が含まれる相違点を探します。 。
-S の違いを説明するには--pickaxe-regex および -G 、 検討
同じファイル内に次の差分を含むコミット:
+ return !regexec(regexp, two->ptr, 1, ®match, 0);
...
- hit = !regexec(regexp, mf2.ptr, 1, ®match, 0);
git log -G"regexec\(regexp" ではこのコミットが表示されますが、 git log -S"regexec\(regexp"
--pickaxe-regex はそうではありません (その文字列の出現回数が一致しないため)
変化する)。
ジョブの設定方法については、 つるはし エントリー gitdiffcore(7)詳細については。
--つるはし-すべて
-S または -G が変更を見つけた場合、その変更セット内の変更だけでなく、すべての変更を表示します。
変更を含むファイル。
--ツルハシ-正規表現
治療する一致する拡張 POSIX 正規表現として -S に与えられます。
-O
で指定した順序でパッチを出力します。 、シェル グロブが XNUMX つあります
行ごとのパターン。 これは diff.orderFile 構成変数をオーバーライドします (「 ギット-
設定(1))。 diff.orderFile をキャンセルするには、-O/dev/null を使用します。
-R
XNUMX つの入力を交換します。 つまり、インデックスまたはディスク上のファイルからツリーまでの差異を表示します。
内容。
--相対[= 】
プロジェクトのサブディレクトリから実行する場合、外部の変更を除外するように指示できます。
このオプションを使用すると、ディレクトリとそのディレクトリに対する相対パス名が表示されます。 いないときは
サブディレクトリ (例: ベア リポジトリ内)、作成するサブディレクトリに名前を付けることができます
を与えることによる相対的な出力議論として。
-文章
すべてのファイルをテキストとして扱います。
--ignore-space-at-eol
EOL 時の空白の変更を無視します。
-b、--ignore-space-change
空白の量の変化を無視します。 これは行末の空白を無視し、
XNUMX つ以上の空白文字の他のすべてのシーケンスは同等であると見なされます。
-w、 --ignore-all-space
行を比較するときに空白を無視します。 これは、XNUMX つの行に次のような違いがある場合でも、違いを無視します。
他の行には何もない空白。
--空白行を無視
行がすべて空白の変更は無視してください。
--inter-hunk-context=
指定された行数までの差分ハンク間のコンテキストを表示します。
互いに近いハンクを融合します。
-W、--関数コンテキスト
変化の周囲の機能全体を表示します。
--ext-diff
外部の差分ヘルパーの実行を許可します。 外部の差分ドライバーを設定すると、
git属性(5)、このオプションを使用する必要があります git-ログ(1)と友達。
--no-ext-diff
外部の差分ドライバーを禁止します。
--textconv、--no-textconv
バイナリの比較時に外部テキスト変換フィルタの実行を許可 (または禁止)
ファイル。 見る git属性詳しくは(5)をご覧ください。 textconv フィルターは通常、
一方向変換の場合、結果の差分は人間が使用するのには適していますが、使用できません。
適用されます。 このため、textconv フィルターはデフォルトで次の場合にのみ有効になります。 ギット-
差分(1)と git-ログ(1) ただし、 git-format-パッチ(1) または diff 配管コマンド。
--ignore-submodules [= ]
diff 生成時にサブモジュールへの変更を無視します。 「なし」のいずれかになります。
「untracked」、「dirty」、または「all」。これがデフォルトです。 「none」を使用すると、
追跡されていないファイルまたは変更されたファイル、またはそのHEADが含まれている場合に変更されたサブモジュール
スーパープロジェクトに記録されたコミットとは異なり、
の設定 無視する 内のオプション git-config(1)または gitモジュール(5)。 「追跡されていない」場合
使用されたサブモジュールは、追跡されていないコンテンツのみが含まれている場合、ダーティとは見なされません(ただし
変更されたコンテンツについては引き続きスキャンされます)。 「ダーティ」を使用すると、
サブモジュールの作業ツリー。スーパープロジェクトに保存されているコミットへの変更のみが行われます。
と表示されます (これは 1.7.0 までの動作でした)。 「all」を使用すると、すべての変更が非表示になります。
サブモジュール。
--src-prefix=
「a /」の代わりに、指定されたソースプレフィックスを表示します。
--dst-prefix=
「b/」の代わりに、指定された宛先プレフィックスを表示します。
--プレフィックスなし
送信元または宛先のプレフィックスを表示しません。
これらの一般的なオプションの詳細については、以下も参照してください。 gitdiffcoreとします。
生成 パッチ WITH -P
「git-diff-index」、「git-diff-tree」、または「git-diff-files」が -p オプション「git
diff」を付けずに - 生 オプション、または「-p」オプションを指定した「git log」では、
上記の出力。 代わりにパッチ ファイルを生成します。 作成をカスタマイズできます
このようなパッチは、GIT_EXTERNAL_DIFF および GIT_DIFF_OPTS 環境変数を介して更新されます。
-p オプションで生成されるものは、従来の差分形式とは少し異なります。
1. 次のような「git diff」ヘッダーが先頭にあります。
diff --git a/file1 b/file2
a/ と b/ のファイル名は、名前変更/コピーが関与しない限り同じです。 特に、
作成または削除の場合、/dev/null は a/ または b/ の代わりに使用されます
ファイル名。
名前変更/コピーが関係する場合、file1 と file2 には、ファイルのソース ファイルの名前が表示されます。
それぞれ、rename/copy と rename/copy によって生成されるファイルの名前です。
2. その後に XNUMX つ以上の拡張ヘッダー行が続きます。
古いモード
新しいモード
削除されたファイルモード
新しいファイルモード
からコピー
にコピーする
から名前を変更
に名前を変更します
類似性指数
非類似性指数
索引..
ファイル モードは、ファイル タイプとファイルを含む 6 桁の XNUMX 進数として表示されます。
許可ビット。
拡張ヘッダーのパス名には、a/ および b/ プレフィックスは含まれません。
類似性指数は変更されていない行の割合であり、非類似性指数は
変更された行の割合です。 これは切り捨てられた整数であり、その後に
パーセント記号。 したがって、100% の類似性インデックス値は XNUMX つの等しいファイルに対して予約されます。
一方、100% の非類似性は、古いファイルの行が新しいファイルに組み込まれていないことを意味します。
1。
インデックス行には、変更前と変更後の SHA-1 チェックサムが含まれています。 のは
ファイルモードが変更されない場合は含まれます。 それ以外の場合は、別の行が古いことを示します
そして新モード。
3. パス名内の TAB、LF、二重引用符、バックスラッシュ文字は、\t、\n、
それぞれ \" と \\ です。そのような置換が必要な場合は、全体
パス名は二重引用符で囲みます。
4. 出力内のすべての file1 ファイルはコミット前のファイルを参照し、すべての file2 ファイルはコミット前のファイルを参照します。
ファイルはコミット後のファイルを指します。 それぞれの変更をそれぞれに適用するのは間違いです
順次ファイルします。 たとえば、このパッチは a と b を交換します。
diff --git a/ab/b
から名前を変更
bに改名
diff --git a/bb/a
b から名前を変更
に名前を変更
組み合わせ 違い FORMAT
差分生成コマンドは、-c または --cc オプションを使用して、差分を生成できます。 組み合わせた 差分 を特定いたします。
マージを示しています。 これは、マージを表示するときのデフォルトの形式です git-差分(1)または ギット-
表示する(1)。 また、これらのコマンドのいずれかに -m オプションを指定して、強制的に実行できることにも注意してください。
マージの個々の親との差分の生成。
A 組み合わせた 差分 形式は次のようになります。
diff --combined 説明.c
インデックス fabadb8,cc95eb0..4866510
--- a/describe.c
+++ b/describe.c
@@@ -98,20 -98,12 +98,20 @@@
return (a_date > b_date) ? -1 : (a_date == b_date) ? 0 : 1;
}
- static void description(char *arg)
-static void description(struct commit *cmit, int last_one)
++static void description(char *arg, int last_one)
{
+ unsigned char sha1[20];
+ 構造体のコミット *cmit;
struct commit_list *リスト;
static int 初期化 = 0;
構造体のコミット名 *n;
+ if (get_sha1(arg, sha1) < 0)
+ 使用法(describe_usage);
+ cmit = lookup_commit_reference(sha1);
+ if (!cmit)
+ 使用法(describe_usage);
+
if (!初期化済み) {
初期化 = 1;
for_each_ref(get_name);
1. 次のような「git diff」ヘッダーが前に付いています ( -c オプションがある
使用済み):
diff --結合ファイル
またはこのように( --cc オプションが使用されます):
差分 --cc ファイル
2. XNUMX つまたは複数の拡張ヘッダー行が続きます (この例では、
XNUMX 人の親):
索引、 ..
モード、 ..
新しいファイルモード
削除済みファイル モード、
モード、 .. 行は、少なくとも XNUMX つの場合にのみ表示されます。 は
他のものとは異なります。 検出されたコンテンツに関する情報を含む拡張ヘッダー
移動 (名前の変更とコピーの検出) は、XNUMX つの差分で動作するように設計されています。
複合差分形式では使用されません。
3. XNUMX 行の from-file/to-file ヘッダーが続きます
- - ファイル
+++ b/ファイル
従来の XNUMX 行のヘッダーに似ています。 統一 diff 形式、/dev/null を使用して
作成または削除されたファイルを通知します。
4.チャンクヘッダーのフォーマットが変更され、人々が誤ってチャンクにフィードするのを防ぎます
パッチ -p1。 マージ コミットの変更を確認するために、結合された diff 形式が作成されました。
適用するためのものではありませんでした。 この変更は、拡張版の変更に似ています。 index
ヘッダ:
@@@ @@@
結合差分のチャンク ヘッダーに (親の数 + 1) 個の @ 文字があります
形式でダウンロードすることができます。
従来とは異なり 統一 diff 形式。XNUMX つのファイル A と B を XNUMX つのファイルで表示します。
- (マイナス — A に表示されますが、B では削除されます)、+ (プラス — A にはありませんが、
B) に追加)、または " " (スペース - 変更なし) プレフィックス、この形式は XNUMX つ以上のファイルを比較します
file1、file2、... を XNUMX つのファイル X と比較し、X が各 fileN とどのように異なるかを示します。 XNUMX列
各 fileN が出力行の先頭に追加され、X の行が
ボーマンは
N 列の - 文字は、その行が fileN に表示されるが、表示されないことを意味します。
結果で。 列 N の + 文字は、行が結果に表示されることを意味します。
fileN にはその行がありません (つまり、行が追加された時点から
その親のビュー)。
上記の出力例では、関数シグネチャが両方のファイルから変更されています (したがって、XNUMX つのファイル
- file1 と file2 の両方からの削除に加えて、追加された XNUMX 行が削除されないことを意味する ++
file1 または file2 のいずれかに表示されます)。 また、他の 1 行は fileXNUMX と同じですが、
file2 には表示されません (そのため + で始まります)。
git diff-tree -c で表示されると、マージ コミットの親とマージ コミットが比較されます。
結果 (つまり、file1..fileN が親)。 git diff-files -c で表示すると、比較します
未解決の 1 つのマージ親と作業ツリー ファイル (つまり、file2 はステージ XNUMX 別名)
「私たちのバージョン」、file2 はステージ 3 別名「彼らのバージョン」です)。
例
git log --no-merges
コミット履歴全体を表示しますが、マージはスキップします
git log v2.6.12.. include/scsi drivers/scsi
バージョン以降のすべてのコミットを表示 v2.6.12 include/scsi 内のファイルを変更した、または
drivers/scsi サブディレクトリ
git log --since="2 週間前" -- gitk
過去 XNUMX 週間のファイルへの変更を表示します ギク。 「--」は必要です
との混同を避ける ブランチ 命名 ギク
git log --name-status release..test
「test」ブランチにあるがまだ「release」ブランチにないコミットを表示します。
各コミットが変更するパスのリストとともに。
git log --followbuiltin/rev-list.c
変更されたコミットを含む、builtin/rev-list.c を変更したコミットを表示します。
ファイルに現在の名前が付けられる前に発生しました。
git log --branches --not --remotes=origin
ローカル ブランチのいずれかに存在するが、リモート追跡のいずれにも存在しないすべてのコミットを表示します
の支店 起源 (その起源を持つものはそうではありません)。
git log master --not --remotes=*/master
ローカルマスターにはあるが、リモートリポジトリマスターには存在しないすべてのコミットを表示します
枝。
git log -p -m --first-parent
変更の差分を含む履歴を表示しますが、「メインブランチ」の観点からのみ、
マージされたブランチからのコミットをスキップし、変更の完全な差分を表示します
マージによって導入されました。 これは、次の厳格なポリシーに従った場合にのみ意味を持ちます。
単一の統合ブランチに留まる場合、すべてのトピック ブランチをマージします。
git log -L '/int main/',/^}/:main.c
ファイル main.c 内の関数 main() が時間の経過とともにどのように進化したかを示します。
git ログ -3
表示するコミットの数を 3 に制限します。
考察
Git はある程度、文字エンコーディングに依存しません。
· BLOB オブジェクトの内容は、解釈されていないバイトのシーケンスです。 ありません
コアレベルでのエンコード変換。
· パス名は UTF-8 正規化形式 C でエンコードされます。これはツリー オブジェクトに適用されます。
インデックス ファイル、参照名、コマンド ライン引数のパス名、
環境変数と構成ファイル (.git/config (を参照) git-config(1))、 ギグノーレ(5)
git属性(5)と gitモジュール(5))。
Git はコア レベルでパス名を単に非 NUL のシーケンスとして扱うことに注意してください。
バイトの場合、パス名のエンコード変換はありません (Mac と Windows を除く)。
したがって、非 ASCII パス名を使用すると、プラットフォームやファイルでもほとんど機能します。
従来の拡張 ASCII エンコーディングを使用するシステム。 ただし、作成されたリポジトリは、
このようなシステムは、UTF-8 ベースのシステム (Linux、Mac、Windows など) では正しく動作しません。
およびその逆。 さらに、多くの Git ベースのツールは、単にパス名が次であると想定しています。
UTF-8 では、他のエンコーディングを正しく表示できません。
· コミット ログ メッセージは通常 UTF-8 でエンコードされますが、他の拡張 ASCII エンコードも使用できます。
もサポートされています。 これには ISO-8859-x、CP125x、その他多くのものが含まれますが、
UTF-16/32、EBCDIC および CJK マルチバイト エンコーディング (GBK、Shift-JIS、Big5、EUC-x、CP9xx)
など)。
コミット ログ メッセージは UTF-8 でエンコードすることをお勧めしますが、コアと
Git Porcelain は、プロジェクトに UTF-8 を強制しないように設計されています。 参加者全員が
特定のプロジェクトではレガシー エンコーディングを使用する方が便利であると考えられますが、Git はそれを禁止していません
それ。 ただし、留意すべき点がいくつかあります。
1. git コミット git コミットツリー コミットログメッセージが与えられた場合に警告を発行します
プロジェクトが
レガシーエンコーディング。 これを行う方法は、.git/config に i18n.commitencoding を含めることです。
次のようなファイル:
[i18n]
コミットエンコーディング = ISO-8859-1
上記の設定で作成されたコミットオブジェクトには、i18n.commitencoding の値が記録されます。
エンコードヘッダーにあります。 これは、後で見る他の人を助けるためです。 の欠如
このヘッダーは、コミット ログ メッセージが UTF-8 でエンコードされていることを意味します。
2. git ログ, git 表示する, git 非難 そして友人はコミットのエンコーディングヘッダーを確認します
オブジェクトを削除し、特に指定がない限り、ログ メッセージを UTF-8 に再コード化してみます。 あなた
.git/config の i18n.logoutputencoding で目的の出力エンコーディングを指定できます
次のようなファイル:
[i18n]
logoutputencoding = ISO-8859-1
この構成変数がない場合、i18n.commitencoding の値は次のようになります。
代わりに使用されます。
コミット時にコミット ログ メッセージを再コーディングしないことを意図的に選択したことに注意してください。
UTF-8 への再コーディングができないため、コミット オブジェクト レベルで UTF-8 を強制するように作られました。
必然的に可逆的な操作になります。
CONFIGURATION
詳細はこちら: git-config(1) コア変数の場合、および git-差分(1) diffに関する設定
世代。
フォーマット.プリティ
--format オプションのデフォルト。 (見る かわいいです フォーマット ) デフォルトは中です。
i18n.logOutputEncoding
ログを表示するときに使用するエンコーディング。 (見る 議論 ) デフォルトは次の値です。
設定されている場合は i18n.commitEncoding、それ以外の場合は UTF-8。
ログ日付
人間が判読できる日付のデフォルト形式。 (--date オプションと比較してください。) デフォルトは次のとおりです。
「デフォルト」は、Sat May 8 19:35:34 2010 -0500 のような日付を書き込むことを意味します。
ログフォロー
true の場合、git log は、単一のは
与えられた。 これには --follow と同じ制限があります。つまり、フォローには使用できません。
ファイルが複数あるため、非線形履歴ではうまく機能しません。
log.showRoot
false の場合、git log および関連コマンドは最初のコミットを大きなコミットとして扱いません。
創作イベント。 git log -p 出力内の root コミットは差分なしで表示されます。
添付。 デフォルトは true です。
メールマップ。*
詳細はこちら: gitショートログとします。
メモ.displayRef
core.notesRef で設定されたデフォルトに加えて、どの参照か、または GIT_NOTES_REF、読む
コマンドのログファミリーでコミットメッセージを表示するときのメモ。 見る ギット-
ノートとします。
省略されていない参照名またはグロブの場合があり、複数回指定できます。 あ
存在しない参照に対して警告が発行されますが、どのグロブにも一致しません。
refs は黙って無視されます。
この設定は --no-notes オプションで無効にでき、
GIT_NOTES_DISPLAY_REF 環境変数、および --notes= によってオーバーライドされます。
オプションを選択します。
GIT
の一部 git(1)スイート
onworks.net サービスを使用してオンラインで git-log を使用する