Git 2.56、競合解消で「余計な変更」を混ぜないために

競合を直したあと、その修正だけをコミットするつもりが、作業途中の別ファイルまで含めてしまう。マージ後の確認で、こうした混入を気にする場面はないでしょうか。

The GitHub BlogのHighlights from Git 2.56は、Git 2.56の競合解消支援や、大規模リポジトリ向けの性能改善を紹介しています。
なかでも日々の開発に取り入れやすいのが、競合したファイルに対象を絞ってステージするgit add --resolvedです。

「直したファイルだけ」を操作に組み込む

たとえば、マージでrecipe.txtが競合し、別のnotes.txtには未コミットの編集があるとします。従来のgit add -uは、変更された追跡対象ファイルをまとめてステージするため、無関係な編集も含める可能性がありました。対象を絞るには、ファイルを明示的に指定する必要があります。

git add --resolvedが扱うのは、インデックス上で未解決の競合として残っているパスだけです。競合していないnotes.txtの編集はステージされません。また、対象の通常ファイルに競合マーカーが残っていれば、対象全体のステージを見送り、インデックスを変更せずに知らせます。

この変化の価値は、確認作業の一部をコマンドに任せられる点にあります。「競合解消だけを記録したい」という作業意図を、操作の範囲として表せるようになりました。

任せられるのは範囲の制御まで

ただし、競合マーカーが消えていても、修正内容が正しいとは限りません。同じファイル内で必要な処理を消してしまった場合などは、差分レビューやテストで確かめる必要があります。

チームのマージ手順に取り入れるなら、競合解消後のステージ操作をこのコマンドに置き換え、内容の検証は引き続き行う形が考えられます。Git 2.56が減らせるのは、開発者の判断そのものではなく、その判断と無関係な変更が紛れ込む余地です。操作対象の選別をツールに任せられれば、人は「この修正で動作が正しくつながるか」に確認を集中できます。


関連記事


参考文献

コメント

タイトルとURLをコピーしました