Hatena::ブログ(Diary)

mizchi log

@mizchiの雑記帳

2012-07-30

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


3月からAimingという会社で働いているのですが、会社でGitとGithubを使い込まされ、なんとか最近はものになってきました。
そんな僕から見て、最近流行っているGit初心者向け記事は、「僕らが本当に知りたかったこと」が欠けているようにしか思えません。
そこで、本当のGitの使い方を僕が皆さんに伝授しようと思いました。

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


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

f:id:mizchi:20120730221303p:image:w640

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

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

プロジェクトを作成する

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

f:id:mizchi:20120730221304p:image:w640
なお、移動は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

ゲームを進めましょう
f:id:mizchi:20120730221305p:image:w640

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

$ git commit -am "level2"

更にゲームを進めます

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


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

$ git reset HEAD --hard

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

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

ダンジョン探索の注意点


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


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


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

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

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

wankomagicwankomagic 2012/07/31 00:36 githubでみんなで共有ですね

takano32takano32 2012/07/31 07:06 なぜワルキューレでアーティファクトを取りに行かないのか問いたい。仕様バグなのでGitでは管理できないのでは。もしかして:このバリアント、ワルキューレない?

mizchimizchi 2012/07/31 22:08 DCSSは*bandでもnethackでもない系統です。ワルキューレはいません。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証