君は心理学者なのか?

大学時代に心理学を専攻しなぜかプログラマになった、サイコ(心理学)プログラマかろてんの雑記。

【Git】時よ戻れ!〜RPGゲームの「セーブ」とGitの「commit」の比較から、commitとは何かについて考えてみる〜

f:id:karoten512:20171203194923j:plain

commitとは結局なんなのか

結論

commitとは、

どのセーブ地点にも戻ることができる

高機能な「セーブ」

解説

RPGのセーブとGitのcommitを比較してみます。

RPGの「セーブ」

f:id:karoten512:20171203182706g:plain

ここに冒険の書v0.1があります。

冒険が進んだので、冒険の書v0.2として保存しようとしました。

基本、セーブは上書きなので、

一度保存してしまうと前のデータには戻ることが出来ません。

Gitの「commit」

Gitのcommitは上書きではなく、

「写真をとる」イメージです。

git commit

とすると、パシャッとファイルの写真を取ってくれます。

f:id:karoten512:20171203183651g:plain

冒険が進み、冒険の書v0.2としてコミットすると、

こんな感じになります。

f:id:karoten512:20171203184134g:plain

お気づきでしょうか。

そう、前の「冒険の書v0.1」も写真としてしっかり残っているのです。

残っていると、そのファイルを復活させる(=戻る)ことができます。

セーブとcommitの違い

ズバリ、

戻れるか戻れないか

という違いです。

まずはこの点を抑えておきましょう。

commitは本当に戻れるのか

本当にcommitは戻れるのでしょうか。

ちょっと試してみましょう。

準備

以下のように、冒険の書を作成し、適当に3つコミットします。

f:id:karoten512:20171203194133g:plain

戻してみる

では、冒険の書v0.2に戻してみましょう。

git checkout ハッシュ番号

を使います。

f:id:karoten512:20171203200024g:plain

戻れた。

戻れることのメリット

  • やりなおせる

バグを出しまくっても、どうしようもないコードを書きまくっても、

いつでも戻ってやりなおせる。

  • 安心感

やりなおせるということから、安心感が生まれる。

まとめ

Gitは戻れる。便利。

f:id:karoten512:20171203194336p:plain

どんどんコミットしていきましょう。