git add -p で変更の一部をステージにあげる
変更した1ファイルの中の一部分のみを commit したい場合、git add に p オプションをつけることで、hunk (変更した範囲) ごとにステージにあげるかどうかを聞いてくれる。
git add -p <file_path>
一気にファイル変更しちゃったけどコミットは分けておきたい、なんて時に便利。ファイルパスを指定しない場合、変更したファイルすべてについて聞いてくれる。
実行すると以下のような画面になる。
@@ -9,7 +9,7 @@ class Sample
def bb
end
- def method1
+ def method2
end
def xx
Stage this hunk [y,n,q,a,d,K,j,J,g,/,e,?]?
この hunk どうする?って聞いてくるので、y でステージにあげる、n であげないようにする。コマンドを入れると次の hunk に進む。q を押すか最後まで行くと、指定された hunk がステージに上がって終了。
基本的にy, n, q (終了), e (手動で指定)ができれば十分。よくわからん場合は何も入れずにenter押すとコマンドの説明が見られる。
e (手動で指定) を選んだ場合
vimが立ち上がり、hunk の編集モードに入る。
# Manual hunk edit mode -- see bottom for a quick guide.
@@ -9,7 +9,7 @@ class Sample
def bb
end
- def method1
+ def method2
end
def xx
# ---
# To remove '-' lines, make them ' ' lines (context).
# To remove '+' lines, delete them.
# Lines starting with # will be removed.
反映させたくない部分を消し、それ以外はそのままにする。
"-" 行を反映させたくない場合は、行頭の"-"を消す。
"+" 行の場合は、該当する行を消す。
終わったら:wq
で終了。
コマンドリスト
コマンド | 内容 |
---|---|
y | 反映して次へ進む |
n | 反映させずに次へ進む |
q | 終了 |
a | 今のファイルの hunk を全て反映 |
d | 今のファイルの hunk を全て未反映 |
j | 何もせず次へ進む |
J | 何もせず次の未指定 hunk へ進む |
k | 何もせず前に戻る |
K | 何もせず前の未指定 hunk に戻る |
g | 飛びたい hunk を選択 |
/ | 正規表現で hunk を検索 |
e | 手動で指定 |
? | 各種コマンドの説明 |