git status、君をいつまでも忘れない……
実は4月から新卒プログラマとして毎日プログラム書いているマコピーです。
今まではそんなにプログラムプログラムしていていなかったので、どうなることかと思いましたが、なんとかなっています。
で、最近多いミスがあります。
git addし忘れるってやつです。
この前の金曜日にそれやらかして、飲んでいるときにJenkins死んでいるぞという電話がかかってきて、
「git addし忘れるとか論外だよねー」と罵られながら(一部脚色しています)、
その場でgit addしてpushし、なんとかJenkinsさんのお怒りを鎮めることができました。
まあgit statusし忘れてなければ、コミットに含めていないファイルが分かるわけで、
今回はそれを怠ったがゆえの失敗です。
git statusを忘れないためにも対策してみます。
gitに色をつけよう
「git status忘れるんだけれどどうすればいい?」と聞くとみんな決まって
「ハァ? 忘れないでしょ」というように軽蔑の目。
この時点で泣きそうなんですけれど、出会うたびにニヤニヤしながら僕をdisってくる
[twitter:@_ishkawa]くんがこの時ばかりは助け舟。
「え、色つけてないの? マコピー情弱だね」
「あ、はい。。。」
というわけでくれたのがこれ。
早速適応してみると、こんな感じ
やべぇ、まるわかり! しかも設定意外と簡単なんですね。これで僕も玉虫色のgit生活が送れる!
いや、まて、これはgit statusをして見逃さないようにするための対策。
僕みたいなあんぽんたんは油断してgit statusすら打たないときがあるので、そのための対策をしなければ。
ぜったいgit statusする
git commitしようとするときに、「addしてないファイルがあるけど本当にcommitする?」
みたいな感じのを出せないかな。同時にgit statusもするみたいな。
commit直前に走るスクリプトは.git/hooks/pre-commitに書くっていうのは知っている。
ここに何か書けばいいのかな。
#!/bin/sh if git status -s | grep '^??' ; then git status printf "\e[31mExist of untracked files.\e[m\n" fi
とまあこんな感じで、git addしていないファイルがあるときはgit statusするようにしてみた。
commitはされるけれど、「おやっ?」と気づくからまだいいかな。
こんなことしても、addしたファイルがないときはstatusが勝手に走るんだけれど、
addしたファイルが1つでもある場合は、statusが走らない。
あと、上記のように(y/n)とか表示させて本当にコミットするの? とやることも考えたんだけれど、
git - can pre-commit hook accept user input?
よく読んでいないけれどなんかできないらしい。
あくまでもpre-commitはワーキングツリーの状態を見て判断するわけで、
そのときにユーザが介入できるわけではないらしい。