【ツール活用|初心者向け】まとめて変更してしまったコードを賢く分割!Gitの「Patch Mode」活用術

1. 導入:なぜgit add -pが必要なのか?

開発をしていると、バグ修正とコードの整理(リファクタリング)を同時に行ってしまい、一つのファイルの中に複数の変更が混ざってしまうことはよくあります。そのまま git add . をしてコミットすると、修正内容が混ざり合い、後から履歴を追うのが非常に困難になります。
そんな悩みを解決するのが「Patch Mode(git add -p)」です。この機能を使えば、変更内容を「塊(Hunk)」ごとに確認しながら、必要な部分だけを選んでステージングできます。クリーンなコミット履歴を保つための必須スキルです。

2. 基礎知識:Hunk(ハング)とは何か?

Gitにおいて、変更されたコードのまとまりを「Hunk(ハング)」と呼びます。
例えば、ファイルの10行目で行った修正と、50行目で行った修正は、それぞれ別のHunkとして認識されます。git add -p は、このHunk単位で「この修正をコミットに含めますか?」と対話的に問いかけてくれる機能です。これにより、意図した変更だけを論理的に切り分けた美しいコミットを作成できるようになります。

3. 実装/解決策:対話的にステージングする手順

使い方は非常にシンプルです。ターミナルで以下のコマンドを実行するだけです。

git add -p

コマンドを実行すると、ターミナル上に変更差分が表示され、最後に「Stage this hunk [y,n,q,a,d,/,?]」という選択肢が現れます。ここでの主要なキー操作を覚えましょう。

y (yes): このHunkをステージングに追加する
n (no): このHunkをステージングに追加しない
s (split): Hunkが大きすぎる場合、さらに細かく分割する
q (quit): 終了してステージングを中断する

4. サンプルプログラム:実践的なワークフロー

もしファイル内に複数の修正がある場合、以下のようなステップで進めます。


1. まずは現在の変更状況を確認
git status

2. Patch Modeを起動
git add -p

3. ターミナルに表示される差分を見て、以下の通りに入力していく
(例) バグ修正のHunkなら ‘y’ を入力
(例) まだコミットしたくないデバッグ用のprint文なら ‘n’ を入力

4. 最後にステージング状況を確認
git status

5. 選択した内容だけでコミットを作成
git commit -m “バグ修正:ログイン時のバリデーションエラーを修正”

5. 応用・注意点:現場で役立つコツ

現場でよくある失敗は、一つのHunkが大きすぎて「もっと細かく分けたいのに分けられない」というケースです。その際は、選択肢で s (split) を押してください。Gitが自動的にHunkをさらに細かく分割して提示してくれます。

また、注意点として、git add -p はあくまで「ステージング」の操作です。誤って必要な修正まで ‘n’ を押してしまっても、再度 git add -p を実行すればやり直せるので安心してください。
まずは「とりあえず全部 add する」癖を卒業し、git add -p を使って「意味のある単位でコミットする」習慣を身につけましょう。これだけで、あなたのコードレビューの質と開発チームの生産性は劇的に向上します。

コメント

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