行を削除するパッチの適用

ファイルから行を削除するUnified Diffの適用方法を理解します。'-'行プレフィックス、Hunkカウント、削除が行番号に与える影響を解説します。

Basic Patches

詳細な説明

Unified Diffパッチで行を削除する

パッチが行を削除する場合、それらの行はDiff内で-プレフィックス付きで表示されます。パッチエンジンは削除対象の行をオリジナルテキストと照合し、出力から削除します。

オリジナルの例

import React from 'react';
import PropTypes from 'prop-types';
import lodash from 'lodash';

function App() {
  return <div>Hello</div>;
}

パッチの例

--- a/App.js
+++ b/App.js
@@ -1,7 +1,5 @@
 import React from 'react';
-import PropTypes from 'prop-types';
-import lodash from 'lodash';

 function App() {
   return <div>Hello</div>;
 }

Hunkヘッダーの分析

@@ -1,7 +1,5 @@の意味:

  • オリジナルは1行目から7行
  • 結果は1行目から5行
  • 差分:2行削除

内部での削除の仕組み

パッチエンジンはHunk内の各行を順に処理します:

  1. コンテキスト行( プレフィックス)— 出力に保持、オリジナルと一致必須
  2. 削除行(-プレフィックス)— オリジナルと一致必須だが出力には書き込まない
  3. 追加行(+プレフィックス)— 出力に書き込む(この例ではなし)

-行が対応するオリジナル行と一致しない場合、Hunkの適用に失敗し、コンテキスト不一致エラーが報告されます。

ユースケース

セキュリティ監査でプロジェクトが未使用の依存関係をインポートしていることが判明しました。これらのインポートを削除するパッチを受け取り、手動編集なしでコードベースをクリーンアップできます。

試してみる — Diff Patch Applier

フルツールを開く