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
スポンサーリンク