英語フランス語スペイン語

Ad


OnWorksファビコン

git-blame - クラウド上のオンライン

Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、または MAC OS オンライン エミュレーター上の OnWorks 無料ホスティング プロバイダーで git-blame を実行します。

これは、Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、または MAC OS オンライン エミュレーターなどの複数の無料オンライン ワークステーションの XNUMX つを使用して、OnWorks 無料ホスティング プロバイダーで実行できるコマンド git-blame です。

プログラム:

NAME


git-blame - ファイルの各行を最後に変更したリビジョンと作成者を表示します

SYNOPSIS


git 非難 [-c] [-b] [-l] [--root] [-t] [-f] [-n] [-s] [-e] [-p] [-w] [--incremental]
[-L ] [-S ] [-M] [-C] [-C] [-C] [--since= 】
[--略語= ][ | - コンテンツ| - 逆行][--]

DESCRIPTION


指定されたファイルの各行に、最後のリビジョンからの情報を注釈として付けます。
行を修正しました。 必要に応じて、指定されたリビジョンから注釈付けを開始します。

-L を XNUMX 回以上指定すると、要求された行への注釈が制限されます。

ファイル全体の名前が変更されると、行の起点が自動的に追跡されます (現在、
名前変更のフォローをオフにするオプションはありません)。 あるファイルから次のファイルに移動された行をたどるには
別のファイルを参照するか、別のファイルからコピーして貼り付けた行をたどる場合などは、
-C および -M オプション。

このレポートでは、削除または置換された行については何も示されません。 あなた
のようなツールを使用する必要があります git 差分 または、「ツルハシ」インターフェイスについて簡単に説明しました。
次の段落。

ファイル注釈のサポートとは別に、Git は開発履歴の検索もサポートします
変更の際にコード スニペットが発生した場合。 これにより、コードがいつ実行されたかを追跡することが可能になります。
スニペットがファイルに追加され、ファイル間で移動またはコピーされ、最終的には削除または
交換されました。 これは、diff 内のテキスト文字列を検索することで機能します。 小さな例としては、
blame_usage を検索するつるはしインターフェイス:

$ git log --pretty=oneline -S'blame_usage'
5040f17eba15504bad66b14a645bddd9b015ebb7 blame -S <ancestry-file>
ea4c7f9bf69e781dd0cd88d2bccb2bf5cc15c9a7 git-blame: Make the output

OPTIONS


-b
境界コミットには空の SHA-1 を表示します。 これは、次の方法でも制御できます。
blame.blankboundary 設定オプション。

- 根
ルートコミットを境界として扱わないでください。 これは、次の方法でも制御できます。
blame.showRoot 設定オプション。

--show-stats
非難出力の最後に追加の統計を含めます。

-L 、 、-L :
指定された行範囲のみに注釈を付けます。 複数回指定することも可能です。 重複
範囲は許可されます。

とはオプションです。 「-L ”または”-L 」から始まります。 に
ファイルの終わり。 「-L、 」はファイルの先頭から。

と次のいずれかの形式を取ることができます。

・ 番号

もしもまたは数値の場合、絶対行番号 (行数) を指定します。
1年から)。

· /正規表現/

このフォームは、指定された POSIX 正規表現に一致する最初の行を使用します。 もしもです
正規表現の場合、前の -L 範囲があればその末尾から検索します。それ以外の場合は、
ファイルの先頭から。 もしも「^/regex/」の場合、先頭から検索します。
ファイル。 もしもが正規表現の場合、次で指定された行から検索します。 。

· +オフセットまたは-オフセット

これは次の場合にのみ有効です前後の行数を指定します
によって与えられた行。

もしも ": ” の代わりに与えられます。 と、それは正規表現です
これは、一致する最初の funcname 行からの範囲を示します。 、 以下
次の関数名の行。 「: ” は、前の -L 範囲の末尾から検索します。
任意、それ以外の場合はファイルの先頭から。 「^: 」はファイルの先頭から検索します。

-l
長い回転を表示します (デフォルト: オフ)。

-t
生のタイムスタンプを表示します (デフォルト: オフ)。

-S
を呼び出す代わりに revs-file のリビジョンを使用します git-rev-リストとします。

- 逆行する
歴史を後戻りではなく前に進めます。 リビジョンを表示する代わりに、
行が表示された場合、これはその行が存在した最後のリビジョンを示します。 これには必要です
START..END のようなリビジョンの範囲。START に原因となるパスが存在します。

-p、--磁器
マシンで使用できるように設計された形式で表示します。

--ライン磁器
磁器形式を表示しますが、行ごとにコミット情報を出力します。
初めてコミットが参照されたとき。 --磁器を意味します。

- 増分
マシンで使用できるように設計された形式で結果を段階的に表示します。

--エンコーディング=
著者名とコミット概要の出力に使用されるエンコーディングを指定します。 に設定する
none を指定すると、blame が変換されていないデータを出力します。 詳細については、ディスカッションを参照してください
でのエンコードについて git-ログ(1)マニュアルページ。

- コンテンツ
いつが指定されていない場合、コマンドは、から逆方向に始まる変更に注釈を付けます。
作業ツリーのコピー。 このフラグは、コマンドを作業ツリーのコピーであるかのように見せます。
指定されたファイルの内容が含まれます (コマンドをファイルから読み取るようにするには - を指定します)
標準入力)。

- 日にち
日付の出力に使用する形式を指定します。 --date が指定されていない場合、
設定変数blame.dateが使用されます。 blame.date 構成変数も設定されていない場合は、
iso形式が使用されます。 サポートされている値については、--date オプションの説明を参照してください。
at git-ログとします。

-M| |
ファイル内で移動またはコピーされた行を検出します。 コミットによってブロックが移動またはコピーされると、
行 (たとえば、元のファイルには A があり、次に B があり、コミットによってそれが B に変更され、
次に A)、伝統的な 非難 アルゴリズムは動きの半分だけを認識し、
通常は、上に移動された行 (つまり B) を親に非難し、責任を割り当てます。
子コミットに移動された行 (つまり A) に移動します。 このオプションを使用すると、両方の
行のグループは、追加の検査パスを実行することによって親のせいになります。

はオプションですが、英数字の数の下限です。
これらの行を関連付けるには、Git がファイル内の移動/コピーを検出する必要があります。
親コミットと一緒に。 デフォルト値は 20 です。

-C| |
-M に加えて、変更された他のファイルから移動またはコピーされた行を検出します。
同じコミット。 これは、プログラムを再編成してコードを移動する場合に便利です。
ファイル間で。 このオプションを XNUMX 回指定すると、コマンドはさらに
ファイルを作成するコミット内の他のファイルからコピーします。 このオプションを指定すると
XNUMX 回、コマンドは任意のコミット内の他のファイルからのコピーをさらに検索します。

はオプションですが、英数字の数の下限です。
これらの行を関連付けるには、Git がファイル間の移動/コピーを検出する必要があります。
親コミットと一緒に。 デフォルト値は 40 です。 -C が複数ある場合
オプションが与えられると、 最後の -C の引数が有効になります。

-h
ヘルプメッセージを表示します。

-c
と同じ出力モードを使用します。 git-annotate(1) (デフォルト: オフ)。

--スコア-デバッグ
ファイル間の行の移動に関連するデバッグ情報を含めます (-C を参照)
ファイル内で行が移動されました (-M を参照)。 リストされている最初の数字はスコアです。 これは
間または内部で移動されたと検出された英数字の数
ファイル。 これは、一定のしきい値を超える必要があります。 git 非難 それらの行を考慮するために
コードが移動されました。

-f、--表示名
元のコミットのファイル名を表示します。 デフォルトでは、ファイルがある場合はファイル名が表示されます。
名前変更の検出により、別の名前を持つファイルからの行。

-n、--表示番号
元のコミットの行番号を表示します (デフォルト: オフ)。

-s
出力から作成者名とタイムスタンプを抑制します。

-e、--電子メールの表示
著者名の代わりに著者の電子メールを表示します (デフォルト: オフ)。 これも可能です
blame.showEmail 構成オプションを介して制御されます。

-w
親のバージョンと子のバージョンを比較して場所を見つけるときに空白を無視します。
ラインはから来ました。

--abbrev=
デフォルトの 7+1 の XNUMX 進数をオブジェクトの短縮名として使用する代わりに、
使用+1桁。 境界コミットをマークするキャレットに 1 列が使用されることに注意してください。

磁器 FORMAT


この形式では、各行はヘッダーの後に出力されます。 ヘッダーには少なくとも次のものがあります
最初の行には次の内容が含まれます:

· その行が属しているコミットの 40 バイトの SHA-1。

· 元のファイルの行の行番号。

· 最終ファイルの行の行番号。

· 前のコミットとは異なるコミットから行のグループを開始する行で、
このグループ内の行数。 後続の行には、このフィールドはありません。

このヘッダー行の後には、コミットごとに少なくとも XNUMX 回次の情報が続きます。

· 著者名 ("author")、電子メール ("author-mail")、時刻 ("author-time")、およびタイムゾーン
(「著者-tz」); コミッターの場合も同様です。

· その行が属しているコミット内のファイル名。

· コミット ログ メッセージの最初の行 (「概要」)。

実際の行の内容は、上記のヘッダーの後に TAB を先頭に付けて出力されます。 これ
後でさらにヘッダー要素を追加できるようにするためです。

ポーセレン形式では通常、すでに確認されているコミット情報が抑制されます。
たとえば、同じコミットに起因する XNUMX つの行は両方とも表示されますが、
そのコミットの詳細は XNUMX 回だけ表示されます。 これはより効率的ですが、必要な場合があります
より多くの状態はリーダーによって保持されます。 --line-porcelain オプションを使用すると、完全な出力を行うことができます。
各行のコミット情報により、次のようなより単純な (ただし効率は低下します) 使用法が可能になります。

# 各著者に帰属する行数をカウントする
gitblame --line-porcelain ファイル |
sed -n 's/^author //p' |
並べ替え | ユニーク -c | ソート -rn

指定する 範囲


取消 git 非難 & git 注釈を付ける 古いバージョンの git では、アノテーションの範囲
行範囲とリビジョン範囲の両方に制限できます。 -L オプション。これは制限します。
行範囲への注釈は複数回指定できます。

ファイル foo の行 40 ~ 60 の起点を見つけたい場合は、次のように使用できます。
-L オプションは次のようになります (これらは同じことを意味します。どちらも行から始まる 21 行を要求します)
40):

git のせい -L 40,60 foo
git 非難 -L 40,+21 foo

また、正規表現を使用して行範囲を指定することもできます。

gitblame -L '/^sub hello {/,/^}$/' foo

これにより、アノテーションが hello サブルーチンの本体に限定されます。

バージョン v2.6.18 より古い変更、または 3 より前の変更に興味がない場合
週の場合は、次のようなリビジョン範囲指定子を使用できます。 git リビジョンリスト:

gitblame v2.6.18.. -- foo
gitblame --since=3.weeks --foo

注釈を制限するためにリビジョン範囲指定子が使用されている場合、制限されていない行は
範囲境界以降に変更されました (コミット v2.6.18 または最新のコミット)
上の例では 3 週間以上経過しています) は、その範囲境界のコミットのせいです。

特に便利な方法は、追加されたファイルにコピーアンドペーストで作成された行が含まれているかどうかを確認することです。
既存のファイルから。 場合によっては、これは開発者がずさんで、
コードを適切にリファクタリングしない。 まず、ファイルを導入したコミットを見つけます。
と:

git log --diff-filter=A --pretty=short -- foo

次に、commit^! を使用して、コミットとその親の間の変更に注釈を付けます。 表記:

gitblame -C -C -f $commit^! -- ふー

増分 出力


--incremental オプションを指定して呼び出すと、コマンドはビルド時に結果を出力します。 の
出力は通常、より最近のコミットによって触れられた行について最初に話します (つまり、
行には順不同で注釈が付けられます)、インタラクティブなビューアで使用することを目的としています。

出力形式は磁器形式に似ていますが、実際の出力形式は含まれません。
注釈が付けられているファイルの行。

1. 各非難エントリは常に次の行で始まります。

<40 バイトの 1 進数 shaXNUMX>

行番号は 1 から数えます。

2. コミットが初めてストリームに表示されるとき、コミットにはその他のさまざまな情報が含まれます
それについての説明が各行の先頭に XNUMX 語のタグとともに出力されます。
追加のコミット情報 (作成者、電子メール、コミッター、日付、概要など)。

3. Porcelain形式とは異なり、ファイル名情報が常に与えられて終了します。
エントリ:

"ファイル名"

したがって、行指向および単語指向のパーサーで解析するのは非常に簡単です。
(これはほとんどのスクリプト言語にとってごく自然なはずです)。

Note
解析を行う人向け: 解析をより堅牢にするために、間の行はすべて無視してください。
最初で最後のもの(" " および "filename" 行) が認識できない箇所
の先頭にあるタグワード (またはその特定のワードに注目)
「拡張情報」行。 そうすれば、追加情報(
コミットエンコーディングや拡張コミットコメントなど)、非難を見る人は気にしません。

MAPPING 作者


ファイル .mailmap がリポジトリのトップレベル、または指定された場所に存在する場合
mailmap.file または mailmap.blob 構成オプションによって、作成者と
コミッター名と電子メール アドレスを正規の本名と電子メール アドレスに変更します。

単純な形式では、ファイル内の各行は、ファイルの正規の実際の名前で構成されます。
作成者、空白、およびコミットで使用される電子メール アドレス (で囲まれています) < & >) マップへ
名前に。 例えば:

正式名称[メール保護]>

より複雑な形式は次のとおりです。

<[メール保護]>>[メール保護]>

これにより、mailmap はコミットの電子メール部分のみを置き換えることができます。

正式名称[メール保護]>>[メール保護]>

これにより、mailmap は、一致するコミットの名前と電子メールの両方を置き換えることができます。
指定されたコミット電子メール アドレス、および:

正式名称[メール保護]> コミット名[メール保護]>

これにより、mailmap は、両方に一致するコミットの名前と電子メールの両方を置き換えることができます。
指定されたコミット名とメールアドレス。

例 1: 履歴には、Jane と Joe という XNUMX 人の作成者によるコミットが含まれており、その名前が表示されます。
いくつかの形式でリポジトリ内にあります。

ジョー・デベロッパー[メール保護]>
ジョー R. 開発者[メール保護]>
ジェーン・ドウ[メール保護]>
ジェーン・ドウ
ジェーン D.

ここで、ジョーは自分のミドルネームのイニシャルを使用することを望んでおり、ジェーンは自分の姓を好むと仮定します。
完全に綴られています。 適切な .mailmap ファイルは次のようになります。

ジェーン・ドウ
ジョー R. 開発者[メール保護]>

エントリが必要ないことに注意してください。 、本名だから。
その著者はすでに正しいです。

例 2: リポジトリには、次の作成者からのコミットが含まれています。

ニック1[メール保護]>
ニック2[メール保護]>
ニック2[メール保護]>
サンタ[メール保護]>
クラウス[メール保護]>
CTO[メール保護]>

次に、次のような .mailmap ファイルが必要になる場合があります。

<[メール保護]>>[メール保護]>
サム・デュード[メール保護]>ニック1[メール保護]>
他の著者[メール保護]>ニック2[メール保護]>
他の著者[メール保護]>>[メール保護]>
サンタクロース[メール保護]>>[メール保護]>

ハッシュを使用する # コメントが単独の行にある場合、または電子メール アドレスの後にある場合。

onworks.net サービスを使用してオンラインで git-blame を使用する


無料のサーバーとワークステーション

Windows と Linux のアプリをダウンロード

Linuxコマンド

Ad