死んで覚える本当のGitの使い方

注意: バズってますが、これははてなダイアリーからはてなブログの自動マイグレーションに失敗してたものを復旧させたもので、書かれたのは2012年です。

    • -

最近流行っているGit初心者向け記事は、「僕らが本当に知りたかったこと」が欠けているようにしか思えません。
そこで、本当のGitの使い方を僕が皆さんに伝授しようと思いました。

なにはともかく使ってみよう

前提として、皆様のお手元にはすでにGitがインストールされているものとします。
今回はエディタとしてDungeonCrawl StoneSoupを使います。

Downloads « Dungeon Crawl Stone Soup http://crawl.develz.org/wordpress/downloads

Dungeon Crwal Stone Soup は今一番ホットなオープンソースローグライクです。風来のシレントルネコのジャンルといったほうが適切でしょうか。Windows/Mac/Linuxに対応。最近はWebSocketで他人のオンラインプレイも視聴できるそうです。

プロジェクトを作成する

Git初心者の方は、初心者向きと言われる Minotaur - Monk がオススメです。序盤はとにかく敵に向かって歩いて行くだけでどんどん薙ぎ倒せます。
ゲームが始まりました。


なお、移動はhjklのVimキーバインドです。
ただ、いかに屈強な Minotaur - Monk といえど、レベルをあげて物理で殴るだけでは勝てません。そこで私たちはGit力を高めてこの問題を解決することにしましょう。

Git で進捗管理

DungeonCrawlStoneSoup では、セーブデータはキャラクター名.cs というファイルに保存されます。Macなら~/Library/Application Support/Dungeon Crawl Stone Soup/saves/ というディレクトリにあります。*1
これをgitに登録しましょう。

$ cd ~/Library/Application Support/Dungeon Crawl Stone Soup/saves/
$ git init 
Initialized empty Git repository in /Users/mizchi/Library/Application Support/Dungeon Crawl Stone Soup/saves/.git/
$ git add mizchi.cs 
$ git commit -m "new Game minotaur - monk"
[master (root-commit) ddb24a2] new Game minotaur - monk
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 mizchi.cs

ゲームを進めましょう

レベル2になりました。本来ならオートセーブされるこのゲームですが、ここでGitの編集を行いましょう。

$ git commit -am "level2"

更にゲームを進めます


Sigmundとかいうモンスターに殴りかかったら死にました。残念、あなたの冒険はここで終わってしまった。


なんてことにならないように、ここで一旦エディタを終了して、最後の編集点にまで戻りましょう。(エディタの終了前に閉じるとエディタに上書きされる可能性があります)

$ git reset HEAD --hard

これでlevel2になった時点に戻りました。

Sigmundは序盤で出会うユニークの中でも一番危険度が高い強敵です。次に出会ったときはなるだけ手を出さないようにしたいですね。
次の探索者はもっとうまくやってくれることでしょう。

ダンジョン探索の注意点

  • 任意の編集戻れるように細かくコミットしましょう。
  • 危険なVaultをみつけたらブランチを切りましょう。死の危険があります。
  • 取り返しがつかないミスをすることもあるでしょう。コミットが粗いとだいぶ前に戻される可能性があります。
  • git reflog でトランザクションのような何かが見えます。git checkout なんかのID で、任意の編集点に戻れます。

なにが言いたかったかというと

必要に迫られれば覚えるから100回死んでこい。
*2

*1:ほかは知らん。ぐぐれ。

*2:本来は死んだら取り返しがつかない緊張感を楽しむゲームです