もし、異世界転生モノのチートスキルが「Gitコマンド」だったら【その1】
この記事のゴール
以下についてざっくり理解することができる(かもしれません)。
- commitとはなにか
- checkoutとはなにか
本編
僕「好きです。付き合ってください!」
帰り道、僕は勇気をふりしぼって先輩にそう伝えた。
先輩はちょっと驚いた顔をした。
そのまま笑って、何かをつぶやく。
ーー僕は、横から突然やってきた暴走トラックに跳ねられたので、何も聞けなかった。
気がつくと、森の中にいた。
僕「ここは一体…?」
薄暗い森の中。
僕「そうか、僕、あの時…」
死んだのだ。
頭に霞がかかったかのようだ。思考がまとまらない。
しかし、僕はここが異世界なのだと、何故か瞬時に分かった。
周りを見渡すと、少しはなれたところに男が立っている。
フラフラとしたおぼつかない足取り。虚ろな瞳。痩けた頬。
明らかに憔悴しきっている。
男は虚空をしばらく見つめていた。
……そして振り絞るような声で、こうつぶやいた。
git checkout 5d417427edb1af2687f0d388fe7c8b04cfd559b7
とたん、男はまばゆい光に包まれ、消えた。
???「また、行ったのね」
背後から女性の声がした。
女性「こりない人」
そういってため息を付いた。身なりは「よくある女神的な」格好をしている。
その人は整った顔をしている。しかし女神とは程遠いやさぐれた表情をしていた。
女性「あら。あなたいつ来たの?」
僕「さっき…」
僕「あの、先程の、男性は?」
女性「ああ。あれね」
女性「あれは、ターニングコミットにcheckoutしたのよ」
僕「ターニングコミット?」
ターニングコミット。checkout。どちらも聞いたことない言葉。
呆けた僕の顔を一瞥し、女性は続けた。
女性「人生は選択に満ちているわ」
女性「そして、選択のたびに人は、コミットするの」
女性「今の自分は、今までの自分のコミットの積み重ねで出来てる」
女性「その中でも、今後の選択に大きな影響を与えるコミットがあるの」
女性「それが、ターニングコミット。つまり、『人生における重要な選択の時』」
女性「そして、この世界はね」
女性「選択に失敗した人たちのための、救済の世界」
女性「ターニングコミットに戻って、やり直すことができるの」
僕「やり直す。。。」
女性「まずはターニングコミットにcheckoutして、ブランチを切る」
女性「ブランチでしばらくコミットして、うまくいったらあなたの本当の人生に戻れる」
女性「つまり、マージできるの」
女性は僕の方に体を向けた。
手には小さな羊皮紙。そしてこう続けた。
女性「あなたのターニングコミットはいつ?」
羊皮紙を僕に手渡した。
女性「強く、強く念じるのよ」
僕は思い出す。
やり直したかった。行きたかった。
僕が死なない世界。僕が先輩の答えを聞ける世界。
あの日の放課後、あの時あの場所にいかなければ、僕は。
きっと、先輩の答えを聞けていただろう。
目をギュッとつぶって念じる。
チリチリという音。羊皮紙の焼け焦げる匂い。
女性「……出たわね」
目を開けると、羊皮紙には焼け焦げた文字。
9e417427edc1cd2687f0d311fe7c8b04cfd559b7
女性「これがあなたの、ターニングコミットハッシュよ」
女性「大事になさい」
女性「良いマージができることを祈っているわ」
そういって女性は森の奥に消えていった。
やり直せる……。
やり直せるんだ。
羊皮紙を握りしめる。
僕は、震える声で、つぶやいた。
git checkout 9e417427edc1cd2687f0d311fe7c8b04cfd559b7
(つづく)
解説
コミットとはなにか
コミットとは「セーブデータ」です。
(イメージ)
ただし、普通のRPGのセーブデータとは大きく異なる点があります。
「上書き保存か」「上書き保存でないか」
「以前のデータに戻れないか」「戻れるか」
という点です。
saveの場合
同じデータに保存しようとすると、上書き保存することになるので、
上書き保存したあとは前のデータに戻ることができません。
commitの場合
それに対し、commitは上書き保存ではなく、
写真をとるようなイメージです。
上図のように、冒険の書v0.1がすでにコミットされている状態だとします。
冒険の書0.2のファイルをコミット(写真をとる)すると、
冒険の書v0.2の写真がコミットとしてのこります。
重要なのは、
冒険の書v0.1のデータも残っているということです。
残っているので、あとから冒険の書v0.1に戻ることができます。
このような仕組みにより、
今までコミットしたところに戻ることができるのです。
まとめた図
戻れるか、戻れないかというところが特に重要になります。
どうやってターニングコミットに戻っているのか
先程少し触れたように、
Gitでバージョン管理すると、今までcommitしたすべての地点へ戻ることができます。
その時に使うコマンドが
git checkout コミットハッシュ
です。
コミットハッシュは、git logしたときに出てくる
commit 5d417427edb1af2687f0d388fe7c8b04cfd559b7
これです。コミットに対して一意に生成されます。
「僕」はコミットハッシュに「ターニングコミットハッシュ」を用いて、
自身のターニングポイントに戻ろうとしているわけです。
git checkoutとブランチの切り替えについて
ここで気になってくるのが、
git checkout develop
とか
git checkout master
とか、
ブランチの切り替えにも「checkout」が使われるという点です。
「git checkout ブランチ名」は、ブランチの移動である。
これは半分合っていて、半分間違っています。
あくまでも、
「git checkout は特定コミットへの移動」
なのです。
以下の図を見てみましょう。
例えば、上記の図のようにコミットが並んでいて、
現在C5コミットにいるとします。
実は、developブランチは枝そのものではなく、
C7コミットについた別名です。
C7コミットの別名ですので、
git checkout C7
git checkout develop
のどちらでも、コミットの移動をすることができるのです。
ブランチは
「その枝の最新コミットの別名」
なのです。
commitについてもう少し詳しく
手前味噌で恐縮ですが、以前作ったスライド資料をご参考にしていただければと思います。
まとめ1
Gitでバージョン管理すると、commitした時点に戻れる
呪文は「git checkout」
branchはその枝の最新commitの別名
まとめ2
Gitでバージョン管理すると、commitした時点に戻れる
呪文は「git checkout」
branchはその枝の最新commitの別名
あなたの「ターニングコミット」はいつですか?
Author And Source
この問題について(もし、異世界転生モノのチートスキルが「Gitコマンド」だったら【その1】), 我々は、より多くの情報をここで見つけました https://qiita.com/carotene4035/items/469569a5b5b9904f7d32著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .