ホームページ > ウェブフロントエンド > jsチュートリアル > `.git-blame-ignore-revs` は、一括フォーマット変更を無視します。

`.git-blame-ignore-revs` は、一括フォーマット変更を無視します。

Barbara Streisand
リリース: 2024-09-25 06:21:02
オリジナル
890 人が閲覧しました

.git-blame-ignore-revs は、バージョン 2.23 で導入された Git 機能で、gitblame 結果内の特定のコミットを無視できるようにします。これは、書式設定の変更、名前変更、コードベース全体へのコーディング標準の適用など、コードの実際の機能を変更せずに多数の行を変更する一括コミットの場合に特に便利です。これらの非機能的な変更を無視することで、gitblame はコードの背後にあるコンテキストと推論を説明する意味のある編集に集中できます。

なぜ .git-blame-ignore-revs が重要なのか

ファイルに対して gitblame を使用すると、作成者とタイムスタンプとともに、ファイルの各行が最後に変更されたコミットが表示されます。これは、特定の行が変更された理由を追跡するのに役立ちます。ただし、よりきれいに適用するなど、純粋にフォーマット変更を行う大規模なコミットが履歴の一部である場合、 gitblame はそのコミットを何行も指す可能性があります。このため、実際の機能変更履歴を見つけることが困難になります。

たとえば、チームが Prettier や ESLint などのツールを使用してコードベース全体を再フォーマットする場合、結果のコミットは数千行のコードに影響する可能性があります。 .git-blame-ignore-revs がないと、gitblame はこのコミットが影響を受けるすべての行の責任であると表示してしまい、各行の背後にあるより意味のある履歴が見えにくくなる可能性があります。

.git-blame-ignore-revs を使用すると、これらのコミットをスキップして重要な変更に集中するように gitblame に指示できます。

使用方法 .git-blame-ignore-revs

この機能の使用方法を理解するために、React リポジトリの例を見てみましょう。

ステップ 1: 一括フォーマットのコミットを特定する

React のソース コードには、Prettier などのツールがプロジェクト全体で実行される一括コミットが含まれています。以下にそのような 2 つのコミットを示します:

`.git-blame-ignore-revs` to ignore bulk formatting changes.

  1. コミット: c998bb1 メッセージ: [コンパイラー] よりきれいに実行し、スナップを修正してください このコミットはコードベース全体に Prettier フォーマットを適用し、機能を変更せずに多くの行を変更します。

`.git-blame-ignore-revs` to ignore bulk formatting changes.

2.コミット: fd2b3e1

メッセージ: コンパイラー: Unfork prettier config

このコミットには、Prettier 構成へのさらなる更新が含まれており、リポジトリ内のすべての .ts および .tsx ファイルに影響します。

`.git-blame-ignore-revs` to ignore bulk formatting changes.

これらのコミットはフォーマットのみを扱い、コード行がなぜそのように書かれたのかを調査する際に意味のあるコンテキストを提供しません。

ステップ 2: .git-blame-ignore-revs ファイルを作成する

gitblame にこれらの一括フォーマットコミットを無視させるには、リポジトリのルートに .git-blame-ignore-revs ファイルを作成します。

  1. .git-blame-ignore-revs ファイルを作成します。
touch .git-blame-ignore-revs
ログイン後にコピー

2.関連するコミット ハッシュをファイルに追加し、各コミットが無視される理由を説明します。この場合、前に特定した 2 つのコミットを追加します:

# Prettier formatting changes 
c998bb1ed4b3285398c9c7797135d3f060243c6a 
fd2b3e13d330a4559f5aa21462e1cb2cbbcf144b
ログイン後にコピー

3. .git-blame-ignore-revs ファイルをリポジトリに保存します。このファイルはコードと一緒にバージョン管理できるため、チーム全体が無視されたコミットの同じリストを使用できます。

ステップ 3: 使用するように Git を構成する .git-blame-ignore-revs

gitblame を使用するたびに --ignore-revs-file オプションを入力しないようにするには、.git-blame-ignore-revs ファイルを自動的に使用するように Git を構成できます。

  1. リポジトリ レベルで構成をセットアップします。
git config blame.ignoreRevsFile .git-blame-ignore-revs
ログイン後にコピー

これにより、誰かがこのリポジトリで gitblame を実行するたびに、Git は .git-blame-ignore-revs にリストされているコミットを自動的に無視します。

ステップ 4: 無視されたコミットを使用して git believe を実行します。

これが実際にどのように機能するかを見てみましょう。一括フォーマットのコミットを無視しないと、gitblame は次のように表示される可能性があります:

$ git blame src/someFile.tsx
c998bb1e (Joe Bloggs 2023-03-15 10:00:00 +0200 1) import React from 'react';
fd2b3e13 (Alan 2023-04-01 14:15:30 +0200 2) function App() {
c998bb1e (Joe Bloggs 2023-03-15 10:00:00 +0200 3)     return <div>Hello, world!</div>;
fd2b3e13 (Ben 2023-04-01 14:15:30 +0200 4) }
ログイン後にコピー

この出力は、行 1 と行 3 に対する最後の変更は Prettier フォーマット コミット (c998bb1e) によるものであり、行 2 と行 4 は別の一括コミット (fd2b3e13) で変更されたことを示しています。これらはフォーマットの変更であるため、これらの行の背後にある実際のロジックを誰が導入したかを理解するのには役立ちません。

.git-blame-ignore-revs を設定した後、gitblame を実行すると、一括コミットがスキップされ、実際の履歴が表示されます。

$ git blame src/someFile.tsx
a23d9b34 (May 2022-12-01 09:30:00 +0200 1) import React from 'react';
b12e45a6 (JJ 2022-12-05 11:45:15 +0200 2) function App() {
a23d9b34 (Joe 2022-12-01 09:30:00 +0200 3)     return <div>Hello, world!</div>;
b12e45a6 (Ram 2022-12-05 11:45:15 +0200 4) }
ログイン後にコピー

これで、gitblame は行を正しいコミットに帰属させ、重要でない書式設定の変更を無視します。これにより、実際の機能変更を誰が行ったかを示す有益な情報が得られます。

結論

Git 2.23 の .git-blame-ignore-revs 機能は、一括書式設定やスタイル変更を伴うプロジェクトにとって大きな変革をもたらします。 .git-blame-ignore-revs ファイルをセットアップしてリポジトリを構成すると、Blame 履歴の汚染を心配することなく、コーディング標準を適用したり、Prettier などのツールを実行したり、コードをリファクタリングしたりできます。

このアプローチにより、チームは意味のある変更を追跡する機能を犠牲にすることなく、自信を持ってコードの品質と書式を向上させることができ、コードの各行の背後にある歴史と推論を理解するための貴重なツールとして gitblame を維持することができます。

私たちについて:

Think Throo では、オープンソース プロジェクトで使用される高度なコードベース アーキテクチャの概念を教えることを使命としています。

Next.js/React の高度なアーキテクチャ概念を実践してコーディング スキルを 10 倍にし、ベスト プラクティスを学び、実稼働レベルのプロジェクトを構築します。

私たちはオープンソースです — https://github.com/thinkthroo/thinkthroo (スターを付けてください!)

コードベース アーキテクチャに基づいた高度なコースでチームのスキルを向上させます。詳細については、hello@thinkthroo.com までお問い合わせください。

参考文献:

  1. https://github.com/facebook/react/blob/main/.git-blame-ignore-revs

  2. https://gist.github.com/kateinoigakikun/b0bc920e587851bfffa98b9e279175f2

  3. https://github.com/facebook/react/commit/c998bb1ed4b3285398c9c7797135d3f060243c6a

  4. https://moxio.com/blog/ignoring-bulk-change-commits-with-git-blame/



以上が`.git-blame-ignore-revs` は、一括フォーマット変更を無視します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート