また衝動的に書いてしまいました。反省してます。
前作:シンジ「綾波はなぜAngularを使うの?」レイ「絆だから」
まどかシリーズの前作:そんな…どうして…?さやかちゃん、async/awaitでPromiseから人を守りたいって、そう思って魔法少女になったんだよ。
マミさんのハードなgit生活
マミ 「さて、それじゃgit
体験コース第一弾、張り切っていってみましょうか」
マミ 「準備はいい?」
さやか「準備になってるかどうか分からないけど…git reset --hard
持って来ました!何もないよりはマシかと思って」
マミ 「まあ、そういう覚悟でいてくれるのは助かるわ」
まどか「え?えっと。私は… git reflog
」
さやか「うーわー」
まどか「と、とりあえず、さやかちゃんがバカやったときのことだけでも考えておこうと思って」
~ほむほむ登場~
ほむら「今回の獲物は私がgit rebase
する。貴女達は手を引いて」
マミ 「そうもいかないわ。git reset --hard
してからソースコードを手動コピーしないと」
ほむら「ブランチの構成は保証するわ」
マミ 「信用すると思って?」
ほむら「ば、馬鹿。まだワーキングツリーにソースコードがあるでしょ」
マミ 「もちろん手動バックアップするけど、あんまり暴れたらgit merge
からのgit reset
でコンフリクトを直すわ」
ほむら「今度のブランチは、これまでの伸び方とはわけが違う」
マミ 「おとなしくしていれば帰りにちゃんとgit push origin -f
してあげる」
マミさんの底辺git生活
まどか「私って、昔からgit reflog
とか、git commit --amend
とか人に自慢できないコマンドばかりで」
まどか「きっとこれから先ずっと、git rebase -i
もgit diff --chached --name-status
も出来ないまま、迷惑ばかりかけていくのかなって」
まどか「それが嫌でしょうがなかったんです」
まどか「でもマミさんと会って、git reset --hard
と手動コピーで戦ってるの、見せてもらって」
まどか「同じことが、私にもできるかもしれないって言われて」
マミ 「大変だよ。怪我もするし、プログラミングする暇もなくなっちゃうよ」
まどか「でも、それでもがんばってるマミさんに、私、憧れてるんです」
マミ 「でもさ。せっかくなんだし、願いごとは何か考えておきなさい」
まどか「せっかく…ですかねぇ、やっぱり」
マミ 「失ったソースコードを取り戻すとか、3つ前のコミットを修正するとか、何だっていいじゃない」
まどか「いやぁ…それは全部gitででk…」
マミ 「じゃあ、こうしましょう。キュゥべえにgit branch
とgit checkout
を頼みましょう」
まどか「いやぁ…それはgit checkout -b
でいいd…」
マミ 「それで、みんなでブランチを作ってgit push
するの。私と鹿目さんの、gitコンビ結成記念よ」
まどか「私のローカルブランチを全部リモートリポジトリに?」
さよならマミさん
キュゥべえ「マミ!プルリクマージがコンフリクトした。急いで!」
マミ 「オッケー、わかったわ。今日という今日は速攻でgit reset --hard
してファイル上書きするわよ」
まどか「ええ…author変わっちゃう…」
マミ 「せっかくのとこ悪いけど、一気に決めさせて…もらうわよ!」
さやか「やったぁ!」
マミ 「rm -rf ./foobar && git clone https://foobar.git
」
マミ 「あ」
まどか「あっ、あっ」
さやか「あぁ!」
ほむら「目に焼き付けておきなさい。git clone
し直すとローカルリポジトリは全て消えるのよ」
さやか「返してよ。」
ほむら「ん?」
さやか「返せよ。それは…それは…マミさんのものだ!返せって言ってるだろ!マミさんに!」
ほむら「これはリモートリポジトリのコピーよ。貴女達には、ローカルのソースコードを復活させる資格なんてない」
さやか「マミさん、本当に優しい人だったんだ」
さやか「gitと戦うために、どういう覚悟がいるのか、私たちに思い知らせるために、あの人は…」
まどかの救いの手
ほむら「貴女は自分を責めすぎているわ。鹿目まどか」
まどか「え?」
ほむら「貴女を非難できる者なんて、誰もいない。いたら、私が許さない」
まどか「私がもっと早くにgit status
やgit branch
でマミさんのリポジトリを確認していたら」
ほむら「それで、巴マミの運命が変わったわけじゃないわ」
ほむら「git merge --continue
して"close #128"
でプルリクを閉じてくれただけでも、私は嬉しい」
まどか「ほ…ほむらちゃんはさ、何だかマミさんとは別の意味でベテランって感じだよね」
まどか「誰も…マミさんが死んだこと、気づかないの?」
ほむら「仕方ないわ。ローカルリポジトリを消せば、死体だって残らない。リモートの世界では、彼女は永遠に行方不明者のまま」
ほむら「ローカルリポジトリを使いこなせない魔法少女の最期なんて、そういうものよ」
まどか「ひどいよ…」
さやかちゃん(笑)
~さやかちゃん戦闘中~
まどか「えっ…さやかちゃん!?」
さやか「git cherry-pick
でとどめだぁ!!」
さやか「いやーゴメンゴメン。危機一髪ってとこだったねぇ」
まどか「さやかちゃん…それリビジョン変わってブランチ繋がらないよ」
さやか「ん?あーはっは、んーまあ何、心境の変化って言うのかな?」
さやか「ん?大丈夫だって!git cherry-pick
なら手動コピーじゃないでしょ?」
さやか「舞い上がっちゃてますね、あたし」
さやか「これからも変更の取り込みは、この魔法少女さやかちゃんが、ガンガンgit cherry-pick
しまくりますからね」
さやか「後悔なんて、あるわけない」
ほむら「話って何?」
まどか「あのね、さやかちゃんのこと、なんだけど…」
まどか「あ、あの子はね、思い込みが激しくて、意地っ張りで、結構すぐgit clean -df
しちゃったり」
ほむら「魔法少女としては、致命的ね」
まどか「そう…なの…」
まどかの秘密
詢子「おっ、眠れないのかい?」
まどか「友達がね。大変なの」
まどか「git cherry-pick
もgit clean -df
も、たぶん間違ってなくて」
まどか「なのに、正しいことをがんばろうとすればするほど、どんどんひどいことになっていくの」
詢子「よくあることさ」
まどか「え?」
詢子「悔しいけどね。gitコマンドを覚えていけば、ハッピーエンドが手に入るってわけじゃない」
まどか「ほむらちゃんは…git pull
よりgit fetch
の方が使いやすいこと知ってたの?」
まどか「どうして教えてくれなかったの?」
ほむら「前もって話しても、信じてくれた人は今まで一人もいなかったわ」
まどか「キュゥべえはどうしてgit push
の反対はgit pull
だって言ってるの?」
ほむら「あいつは人間の価値観が通用しない生き物だから」
まどか「ねぇ、杏子ちゃん」
まどか「ローカルブランチばっかり作って、git checkout -- foo
やgit add -p
で本体ブランチを作る私って、やっぱり、卑怯なのかな」
杏子「何でアンタがローカルブランチを作るわけさ?」
まどか「いきなり秘密がバレちゃったね」
まどか「クラスのみんなには、内緒だよっ」
あとがき
ごめんなさい、最後は収集つかなくなって打ち切りみたいになりました。
良いエンディングを思いついた方がいらしたら教えてください。
git
はあらゆる変更を自由自在に組み替えられますが、
一方でgitコマンドを覚えただけではそういう境地には至らない気もしています。
積み木を床にばら撒くようにコミットをそこら辺に残しておいて、後で綺麗なお城(ブランチ)を組み上げる、
そんな風に使えると捗るんだけどね…っていうお話でした。
参考文献 : 魔法少女まどか☆マギカ WIKI 台詞集 (いつも使わせていただいてます、ありがとうございます)