ほ…ほむらちゃん。あの…あなたはどんなgitコマンドを打って魔法少女になったの？

また衝動的に書いてしまいました。反省してます。

前作：[シンジ「綾波はなぜAngularを使うの？」レイ「絆だから」](https://qiita.com/almiraj/items/b87d20ef4778533d6632)
まどかシリーズの前作：[そんな…どうして…？さやかちゃん、async/awaitでPromiseから人を守りたいって、そう思って魔法少女になったんだよ。](https://qiita.com/almiraj/items/2da97f6cc36143f29f8a)

# マミさんのハードな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ででｋ…」
マミ　「じゃあ、こうしましょう。キュゥべえに`git branch`と`git checkout`を頼みましょう」
まどか「いやぁ…それは`git checkout -b`でいいｄ…」
マミ　「それで、みんなでブランチを作って`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 台詞集](https://www22.atwiki.jp/madoka-magica/pages/83.html) (いつも使わせていただいてます、ありがとうございます)