行を削除するパッチの適用
ファイルから行を削除する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内の各行を順に処理します:
- コンテキスト行(
プレフィックス)— 出力に保持、オリジナルと一致必須 - 削除行(
-プレフィックス)— オリジナルと一致必須だが出力には書き込まない - 追加行(
+プレフィックス)— 出力に書き込む(この例ではなし)
-行が対応するオリジナル行と一致しない場合、Hunkの適用に失敗し、コンテキスト不一致エラーが報告されます。
ユースケース
セキュリティ監査でプロジェクトが未使用の依存関係をインポートしていることが判明しました。これらのインポートを削除するパッチを受け取り、手動編集なしでコードベースをクリーンアップできます。