git add
新規追加 or 編集したファイルをインデックスに追加するコマンド「git add」ですが、私は下記のようにオプションを使い分けています。
git add -A
簡単な修正を行ったときや新規作成したファイルばかりのとき。
デバッグコードを追加した時はほとんど使いません。git add [filename]
修正箇所がたくさんあり、その中で新規作成したファイルをインデックスに追加するときだけ。git add -p
修正箇所がたくさんあり、その中で編集したファイルをインデックスに追加するとき。
機能改修や機能追加の時は割といじるコードが多いのでこれを使ってます。
デバッグコードを使いしたときなんかはそこだけスルーできるので便利。
以上のような使い分けをしてます。
git add -pのコマンド
pオプションでaddしたときは、ある程度のまとまり毎に「追加」、「無視」等のコマンドを打ってインデックスに追加していきます。
私は下記の基本的に下記のコマンドを使用します。
y
このまとまりをインデックスに追加しますよというコマンド(yes)n
このまとまりはインデックスに追加しませんよというコマンド(no)q
中止するコマンド(quit)s
(可能であれば)このまとまりを更に小さいまとまりに分けるコマンド(split)
その他にもコマンドはありますが、この後出てくる「e」オプション以外は使用していないので割愛します。
「s」コマンド
git add -pをするとある程度のまとまり毎に追加を行えますが、途中に挟んでいたデバッグコードがまとまりの間に入ったりする時があります。
そんなときは「s」コマンドで分割することができます。
ただし、このコマンドで分割できる最小単位は「連続して変更している行のまとまり」なので注意が必要です。
「e」コマンド
さて、今回「e」コマンドを使った原因は以下のような状況です。
あるファイルに関数を一つ追加して、その中にデバッグコードを追加していました。
デバッグコードを削除しないままgit add -pを実行しました。
もちろん関数まるまる追加なので、間のデバッグコードまで「s」コマンドで分割できません。
qコマンドで中止しようかと思ったのですが、ちょっと立ち止まって調べたら「e」コマンドがあることを知りました。
で、初めて使ったのですが、少し苦戦したのでメモです。(スクショ撮り忘れた)
コマンドを実行するとエディタが立ち上がり、git diffのような内容が記載されています。
デバッグコードの「+」を削除し保存したのですが、エラーが出ます。
よくよくエディタ下部のコメントを読むと、下記のコメントが書いてありました。
# To remove '-' lines, make them ' ' lines (context).
# To remove '+' lines, delete them.
# Lines starting with # will be removed.
簡単に訳すと
- 「-」の行を取り消すには空白に置き換えよ
- 「+」の行を取り消すには行を消せ
- 「#」で始まる行は無視するよ
という内容でした。
誤編集を避けるためなのか「-」と「+」で異なる方法なのはちょっとわかりにくい…。
恐怖しながらデバッグコードの行をまるまる削除して保存したら無事通過できました。
まあ、デバッグコードは一時的なものならaddする前に消した方がいいと思います。