git add -p をさらに分割する


$ git add -p
という、ひとつのファイルから分割して部分的にcommitできる便利なオプションがあって、最近commitをもうちょっとこまめに分けようと心がけるようになってからたびたび使うのだけど、そうすると欲が出てきて、もう少し細かく分割してくれたらなあと思うことがたまにある。

あっ、そうか…いつもy / nしか使ってなくてあんまり意識になかったけど、そういえばなんか他にも色々文字がでてきてたわ…これで分割できたのだね。。というわけで、@shu_0115 さんが書いてくださったGistを貼っておきます。こんなに色々できたのか…(ΦωΦ)


git_add.md



なお、git add -pの使い方はこのエントリがとても詳しかった…ので、詳しくはこちらを参照のこと。
横着で神経質な私とあなたに贈るgit add -p #git #AdventCalendar - Qiita

git add -p → " s " でさらに分割

git add -p で分割された一つのコードの固まり(hunkというらしい)をさらに分割するには " s " をタイプする。すると、当初出てきたhunkをさらに半分くらいのサイズに分割してくれる。
しかし、もっと細かく分割したい!というケースもある。そんなときは " e " をつかって、hunkの内容を手で編集できる。

git add -p → " e " で編集。今回のcommitに入れたくない行を削除

" e " をタイプするとエディタが立ち上がって、hunkの内容を編集できる。えっ、ここで編集しちゃっていいの?消しちゃっていいの?と不安になるけれど、消した行はステージングされずに残るので、今回のcommitに入れたくない行は思い切って削除してOK。


なお、git add -p は、変更した行が連続していると一つの固まりの変更として認識してしまい、" s " してもうまく分割してくれないらしい。
また、" e " の編集機能でも、一つのhunkから連続していない2つの部分を削除したら、それは受け入れられない的なことを言われてしまってダメだった。
あまり込み入った変更をgit add -pでわけるのは無茶なんかもしれない。


教えていただいたこれを使ってみよかな。

GitX(L)


ちなみに、git add -p は変更した内容をいちいち確認しながらステージングできるので、うっかりミスの多め自分にとってはちょうどいい見直しの機会になるので、そこもよくて、最近は git add . をあんまりしなくなった。