はじめに
git add -p
は、コードレビューやコミットの粒度を細かく制御したい場合に非常に便利なツールです。部分的に変更をステージングすることで、より整理されたコミット履歴を作成できます。
ただし、思った以上にプロンプトに表示される選択肢が多かったため、1つの記事として整理したほうが良いと考え、今回投稿してみました。
なお、この記事は自分用の備忘録としてまとめたものです。あらかじめその点をご理解いただければ幸いです。
書こうと思ったきっかけ
これまで Git コマンドは、基本的なリポジトリ作成時に表示されるコマンド程度しか使っていませんでした。
しかし、便利なオプションが数多く存在することを知り、こういったツールを積極的に活用したいと思うようになりました。
そのため、今後自分自身が git add -p
を使いこなせるよう、記事として体系的にまとめてアウトプットしていきます。
git add -p
コマンドについて
git add -p
コマンドは、Git でステージング(インデックスに追加)する際に、変更を部分的に選択してステージングするためのコマンドです。
このコマンドを使うと、ファイル全体ではなく、変更内容の一部(ハンク)を選んで追加することができます。
基本的な使い方
git add -p
を実行すると、変更内容が「ハンク(hunk)」という小さな単位に分割されて表示されます。
git add -p
各ハンクに対して、以下のような操作を選択するプロンプトが表示されます。
プロンプトの選択肢について
プロンプトで表示される選択肢が多いと感じたため、それぞれを表形式で整理してみました。必要に応じて参考にしてください。
キー | 説明 |
---|---|
y |
この削除をステージングに追加する(変更を適用する) |
n |
この削除をステージングに追加しない(変更をスキップする) |
q |
それ以上のハンクの確認を中断する |
a |
すべての残りの削除をステージングに追加する |
d |
すべての残りの削除をステージングに追加しない |
p |
削除の一部を選択する(削除に細分化が適用できる場合) |
? |
使用可能なコマンドのヘルプを表示 |
具体的な例について
以下は、削除に関する変更をステージングする場合の例です。
➜ hello-world git:(main) ✗ git add -p
diff --git a/aa b/aa
deleted file mode 100644
index 72943a1..0000000
--- a/aa
+++ /dev/null
@@ -1 +0,0 @@
-aaa
(1/1) Stage deletion [y,n,q,a,d,p,?]?
このプロンプトは、ファイル aa
が削除される変更をステージングするかどうかを尋ねています。
-
y
を押すと、この変更がステージングされます。 -
n
を押すと、この変更はスキップされ、次のハンクに進みます。 -
s
を押すと、このハンクをさらに分割して、細かくステージングできます。
まとめ
ここまでお読みいただき、ありがとうございました。今回は、自分の備忘録としての簡単な内容でしたが、まとめることで知識を体系的に整理することができました。
こうした基礎的な内容を継続的にアウトプットすることで、自分の知識を深めるだけでなく、必要なときに振り返るための良いきっかけを作りたいと考えています。
この記事が少しでも皆さんの参考になれば幸いです!