Git のインタラクティブステージングとは?
こんにちは。ゆうせいです。
「コミットの粒度を適切にしたい!」 と思っても、実際には「複数の変更が入り混じってしまっている…」なんてこと、よくあるよね。
たとえば、「バグ修正と新機能追加を分けてコミットしたいけど、同じファイルに変更を入れてしまった…!」 みたいな状況。
そんなときに役立つのが、「インタラクティブステージング(git add -p
)」 だよ!
インタラクティブステージングとは?
インタラクティブステージングとは、ファイルの変更の一部だけを選んでステージング(コミット準備)できる機能 のこと。
通常の git add .
や git add ファイル名
では、ファイル全体をステージングするけど、git add -p
を使うと、変更の「塊(ハンク)」ごとに追加するかどうか選べる よ!
git add -p
の基本的な使い方
1. インタラクティブステージングを開始
git add -p
もしくは、特定のファイルだけインタラクティブにステージングしたい場合は:
git add -p ファイル名
2. 変更の「塊(ハンク)」ごとに操作を選ぶ
コマンドを実行すると、Git が変更部分(ハンク)を表示してくれる。
例:変更が入ったコード
diff --git a/index.js b/index.js
index 1234567..89abcde 100644
--- a/index.js
+++ b/index.js
@@ -5,6 +5,7 @@ function login() {
console.log("User login");
+ console.log("New debug log"); // デバッグ用のログ追加
authenticateUser();
}
このとき、次のような選択肢が表示される:
Stage this hunk [y,n,q,a,d,j,J,g,/,e,?]?
ここで、次のキーを使ってどうするか選べるよ!
キー | 意味 |
---|---|
y | この変更をステージングする |
n | この変更をスキップ(ステージングしない) |
q | 途中でやめる |
a | 以降の変更をすべてステージングする |
d | 以降の変更をすべてスキップする |
j | 次のハンクに進む |
J | 前のハンクに戻る |
e | この変更を手動で編集する |
? | ヘルプを表示する |
3. 適切な粒度でステージングし、コミットする
git add -p
を使えば、「デバッグログの追加はコミットに含めたくない」という場合に n
を押せばスキップできる!
あとは、通常通り git commit
すれば、必要な変更だけがコミットされる。
git commit -m "Fix login function"
git add -p
を使うメリット
- コミットの粒度をコントロールできる
- 不要な変更やデバッグ用のコードを間違えてコミットしなくなる!
- 「関係のない変更」を分けてコミットできる
- 例:「バグ修正」と「機能追加」を、同じファイルに変更を加えてしまった場合でも、それぞれ別のコミットに分けられる!
- コミット履歴が分かりやすくなる
- 後で履歴を見たときに、「このコミットで何をしたのか」が明確になる!
もっと細かく選択する方法(手動編集モード)
もし「一部分だけステージングしたい」場合は、e
(edit)を使うと手動で変更を編集できる!
例えば、次の変更があったとする:
function login() {
console.log("User login");
+ console.log("New debug log"); // デバッグ用のログ追加
authenticateUser();
}
ここで e
を選ぶと、エディターが開く。
--- a/index.js
+++ b/index.js
@@ -5,6 +5,7 @@ function login() {
console.log("User login");
+ console.log("New debug log"); // デバッグ用のログ追加
authenticateUser();
}
このとき、不要な行を -
をつけて削除すると、それがコミットから外れるよ!
--- a/index.js
+++ b/index.js
@@ -5,6 +5,7 @@ function login() {
console.log("User login");
- console.log("New debug log"); // デバッグ用のログ追加
authenticateUser();
}
編集を保存すれば、デバッグログを除いた変更だけがステージングされる!
まとめ:git add -p
の使いどころ
✅ デバッグログを含めたくないとき
✅ 異なる種類の変更を別コミットにしたいとき
✅ 誤って不要な変更を加えてしまったとき
これを習慣にすると、「適切な粒度のコミット」 ができるようになるよ!
ぜひ git add -p
を試してみて、きれいな Git 履歴を作ってみよう! 🚀
セイ・コンサルティング・グループの新人エンジニア研修のメニューへのリンク
投稿者プロフィール

- 代表取締役
-
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。
最新の投稿
新入社員2025年2月23日【新人エンジニア必読】「入りを量りて出を制す」の考え方を仕事に活かす
新人エンジニア研修講師2025年2月23日丁寧なのにイラッとする言葉
新入社員2025年2月23日【初心者の方も安心】Gitで避けたい主なトラブル10選
新入社員2025年2月23日【新人エンジニア向け】損失回避バイアスを知って開発リスクを減らそう