【Git】git add -p を使ってコミット単位を整理する
はじめに
この記事ではgit add コマンドのオプション -p (–patch)に関して説明します。
皆さん git を使って開発をしてますでしょうか。開発を進めていくなかで、このファイルのこの変更だけコミットしたい時ってありますよね。
こまめにコミットしていればいいのでしょうが、ついつい色んな変更をまとめて進めてしまったときって、あると思います。そんなとき、git add -p を使うと解決できます。
1つずつ変更を確認することができるため不要なコミットをせずに済むという利点もあったりします。以降、使い方について簡単に説明します。
想定ケース
●index.phpを編集しているとします。
●以下の変更を行いましたが、シングルクォートに修正した内容だけコミットしたい。といったケースを想定しています。
・ 並び順の修正
・ ダブルクォートをシングルクォートに修正
・ コメントの追加
●以下の変更を行いましたが、シングルクォートに修正した内容だけコミットしたい。といったケースを想定しています。
・ 並び順の修正
・ ダブルクォートをシングルクォートに修正
・ コメントの追加
$ git diff
diff --git a/index.php b/index.php
index 27787aa..276a5f1 100644
--- a/index.php
+++ b/index.php
@@ -1,9 +1,9 @@
make(Kernel::class);
使い方
git add -p <ファイル名> を実行すると、インタラクティブモードという状態になりコマンド入力の待ち状態になります。 各変更のかたまり(hunk)ごとにインデックスに追加するかしないかを選択することができます。 (ファイル名を省略すると変更がある全てのファイルに対して操作が行われます。)
(1/3) Stage this hunk [y,n,q,a,d,j,J,g,/,s,e,?]?
?を選択すると各操作の説明を見ることができます。
(1/3) Stage this hunk [y,n,q,a,d,j,J,g,/,s,e,?]? ?
y - stage this hunk
n - do not stage this hunk
q - quit; do not stage this hunk or any of the remaining ones
a - stage this hunk and all later hunks in the file
d - do not stage this hunk or any of the later hunks in the file
g - select a hunk to go to
/ - search for a hunk matching the given regex
j - leave this hunk undecided, see next undecided hunk
J - leave this hunk undecided, see next hunk
s - split the current hunk into smaller hunks
e - manually edit the current hunk
? - print help
たくさんありますので、今回はよく使うであろうy, n, eの紹介をします。
(コマンド) y
変更をインデックスに追加する
(コマンド) n
変更をインデックスに追加しない
(コマンド) e
インデックスに追加する行を手動で選ぶ 表示されている変更のかたまりの中でさらにわけたい場合に便利です。 eを選択するとファイル上で下記のような内容が表示されます。
# Manual hunk edit mode -- see bottom for a quick guide.
@@ -1,9 +1,9 @@
「-」 で始まっているのが削除された行です。この変更をインデックスに追加したくない場合は「-」を「 」(半角スペース)に置き換えます
「+」 で始まっているのは追加された行です。この変更をインデックスに追加したくはい場合は「+」の行をまるっと削除します。
今回、シングルクォートの変更だけ追加したので以下の通りにファイルを編集するとよさそうです。
# Manual hunk edit mode -- see bottom for a quick guide.
@@ -1,9 +1,9 @@
インデックスに追加する行を選択し終えたら、ファイルを閉じます。
すると、手動で選択した結果が反映されます。
最後に
以上の操作を使って、コミットしたい箇所や行だけインデックスに追加していくことができます。あとは、コミットしてあげればいいだけですね。
興味ある方は他の操作内容に関しても試してみてください!
参考
https://tracpath.com/docs/git-add#patch
関連記事
- 2022-09-20
- テクノロジー