初心者向けのgit入門だと、「編集して、十分考えて、満足したらそこまでの分をgit addして、を繰り返して、全体が満足行くようになったらgit commit」なんて書いてあるけど、実際の世の中には、そういうぐあいにお行儀よく順序良く仕事をするのに妨げになる、とってもやっかいなものが存在する。
ボス、だ。この人はいつも自分の要求が一番大事だと思っていて、下っぱがしている仕事がまだ半ばでgit commitできるところまでいっていない、だけど、今までした仕事の量は、とうに、すててしまっても後ですぐにやり直せる、という段階を越えてしまってる、という、一番悪いタイミングで、「ちょっとこれ先にやって」と、実はどうでもいい変更要求を持ってくる。
% edit ...
% test ...
% git add hello.perl
% edit ...
ここでボスから注文。「こら〜、プロジェクト名は全部大文字と言っただろがぁ」
「え〜、今ちょっととり込んでるんですけどぉ」、と言いたくても、それを言えないのが下っぱ。
でも、こういうときには、git stashコマンドを使えば大丈夫。
% git stash
Saved working directory and index state WIP on master: ...
HEAD is now at 1234abcd Fixed hello.perl
%
コマンドひとつで、今までしてた仕事は一度全部横にのけてしまうことができる。そうしたところで、「一番重要なボスのお仕事」をまず片付ける。
% edit README
% git commit -m 'プロジェクト名を大文字で書く' -a
% git push
「直しておわりましたぁ」
こうやって、取りあえずボスの御機嫌が取っておいて、何事もなかったように今までしてた仕事に戻ることができる。
% git stash pop --index
# On branch master
# Changes to be committed:
#
# modified: hello.perl
#
# Changed but not updated:
#
# modified: hello.perl
Dropped refs/stash@[0} (121423...)
今まで大丈夫だと確認してgit addしてあった部分とそれ以外の部分とを区別するのも含めて、ボスの割り込み要求が先にすでにやってあって、さっきまでのまだ途中だった仕事はその後で始めたかのような形で回復することができる。
これを覚えておくととっても精神的に安心。

0