git add -pでインタラクティブに分割してインデックス登録する

スポンサーリンク

git add -pを実際に使ってみる

例えば、file001.txtに下記の変更を加えたとします。

 (master)$ sed -i '1i insert001' file001.txt 
 (master *)$ sed -i '3a insert002' file001.txt 
 (master *)$ sed -i '5a insert003' file001.txt 
 (master *)$ sed -i '7a insert004' file001.txt 
 

git diffすると、

 (master *)$ git diff
diff --git a/file001.txt b/file001.txt
index 36f1211..279d0f2 100644
--- a/file001.txt
+++ b/file001.txt
@@ -1,7 +1,11 @@
+insert001
 text1
 text2
+insert002
 text3
+insert003
 text4
+insert004
 text5
 text6
 text7
 

ここで、git add -p を実行すると、

 (master *)$ git add -p
 diff --git a/file001.txt b/file001.txt
index 36f1211..279d0f2 100644
--- a/file001.txt
+++ b/file001.txt
@@ -1,7 +1,11 @@
+insert001
 text1
 text2
+insert002
 text3
+insert003
 text4
+insert004
 text5
 text6
 text7
Stage this hunk [y,n,q,a,d,s,e,?]? 

sを入力してEnterすると、変更が4つのhunkにsplitされました。
更に、ここから各hunkをインデックスに登録するか、聞いてきます。

Stage this hunk [y,n,q,a,d,s,e,?]? s
Split into 4 hunks.
@@ -1,2 +1,3 @@
+insert001
 text1
 text2
 Stage this hunk [y,n,q,a,d,j,J,g,/,e,?]? 
 

yを入力してEnterして、インデックスに登録します。

Stage this hunk [y,n,q,a,d,j,J,g,/,e,?]? y
@@ -1,3 +2,4 @@
 text1
 text2
+insert002
 text3
 Stage this hunk [y,n,q,a,d,K,j,J,g,/,e,?]? 
 

次はnを入力して、スキップします。
Stage this hunk [y,n,q,a,d,K,j,J,g,/,e,?]? n
@@ -3,2 +5,3 @@
 text3
+insert003
 text4
Stage this hunk [y,n,q,a,d,K,j,J,g,/,e,?]? 

更にスキップします。
 
Stage this hunk [y,n,q,a,d,K,j,J,g,/,e,?]? n
@@ -4,4 +7,5 @@
 text4
+insert004
 text5
 text6
 text7
Stage this hunk [y,n,q,a,d,K,g,/,e,?]? 

最後は、インデックスに登録します。
Stage this hunk [y,n,q,a,d,K,g,/,e,?]? y

スポンサーリンク

git diffをすると

git diffをすると、
インデックス登録をスキップしたhunkが差分として現れています。

 (master *+)$ git diff
diff --git a/file001.txt b/file001.txt
index a240102..279d0f2 100644
--- a/file001.txt
+++ b/file001.txt
@@ -1,7 +1,9 @@
 insert001
 text1
 text2
+insert002
 text3
+insert003
 text4
 insert004
 text5
 

このまま、git commitして、
 (master *+)$ git commit -m "Update file001.txt"
 〜省略〜
  1 file changed, 2 insertions(+)
 

git pushすることができます。

  (master *)$ git push develop master 
  

スポンサーリンク