git add -p のときの e(手動編集)
自分ではあまり add -p の e ってつかったことなかったんだけど友達がよくわからんってことだったので調べてみた。
以下のような diff を add -p して、 e してみます。
$ git add -p diff --git a/fuga b/fuga index 1a39df0..5bc676d 100644 --- a/fuga +++ b/fuga @@ -1,5 +1,5 @@ // hoge -fuga piyo hogera +fugera Stage this hunk [y,n,q,a,d,/,s,e,?]? e
で、エディタが起動するわけです。以下のような感じで書いてあります。
# Manual hunk edit mode -- see bottom for a quick guide @@ -1,5 +1,5 @@ // hoge -fuga piyo hogera +fugera # --- # To remove '-' lines, make them ' ' lines (context). # To remove '+' lines, delete them. # Lines starting with # will be removed. # # If the patch applies cleanly, the edited hunk will immediately be # marked for staging. If it does not apply cleanly, you will be given # an opportunity to edit again. If all lines of the hunk are removed, # then the edit is aborted and the hunk is left unchanged.
ここで出てくる謎のメッセージ(いや、謎でもないんだけど)
# To remove '-' lines, make them ' ' lines (context). # To remove '+' lines, delete them. # Lines starting with # will be removed.
これの意味がわかりづらいですね。先に結論を言うと、
- - の行を add したくなかったら - を スペース (' ') にかえてください
- + の行を add したくなかったらその行を削除してください
- # から始まる行は、add されません
ということなんですが、'delete' が hunk からの削除 = diff からの削除、つまり、add する patch に含めない、つまり、add しない、ということです。
読み替えると、
- 削除行 (-) を add しないなら、- をスペースにかえてください
- 追加行 (+) を add しないなら、その行を削除してください
- add したくない行は先頭に # って書いてください
ですかね。
実際にやってみる
エディタ上で、次のようにしてみます。 (- を ' ' に変更)
# Manual hunk edit mode -- see bottom for a quick guide @@ -1,5 +1,5 @@ // hoge fuga piyo hogera +fugera
で、エディタを閉じると、次のようになります。
$ git status # On branch master # Changes to be committed: # # modified: fuga # # Changed but not updated: # # modified: fuga $ git diff diff --git a/fuga b/fuga index 387b231..5bc676d 100644 --- a/fuga +++ b/fuga @@ -1,6 +1,5 @@ // hoge -fuga piyo hogera fugera $ git diff --cached diff --git a/fuga b/fuga index 1a39df0..387b231 100644 --- a/fuga +++ b/fuga @@ -3,3 +3,4 @@ hoge fuga piyo hogera +fugera
hunk から削除した「fugaの行の削除」という diff が add されてないですね。
つまりそういうことでした
まぁわかってしまえば簡単ですが最初はよくわからないかも。
+ の行の削除とかも、気になったら試してみてね。
多分自分では add -p の「e」は使わないと思うけどw