gitチートシートver0.2を公開して情報デザイン出身の人に激しく突っ込まれた日記


http://www.nishiohirokazu.org/tmp/git02.pdf

あまりに激しく突っ込まれたので「ちょ、ちょっとまって、続きはまた今度で」とお願いして逃げ帰ってきました。

  • リポジトリって何」「変更履歴を溜めておく場所」
  • 「これ書き換えるのはどこ」「<name>のところ」「じゃあ斜体にするか色変えるかいっそ日本語にしなきゃ。かっこごと灰色とかにしないとかっこを入力しちゃうよ」
  • 「コマンドの部分を箱で囲むなり書体を変えるなりプロンプトつけるなりが必要」
  • 「コミットをするって何?」「変更履歴をリポジトリに入れること」
  • 「なんで『最初の』コミットなの?最後のコミットはあるの?」
  • 「コメントでの解説の色を変えろよ」
  • 「『.gitにできる』ってどこ?急に思いついて作っていいの?いつもhomeにいるとは限らないでしょ」「いまいるディレクトリの中。思いついて作っていいよ」「2回 git initしたらどうなるの」「2回目はもうあるよ!ってエラーになるはず」
  • 「addで登録して、commitで…。なんで2回するの」(右上の頭をさして説明しようとする)
  • 「stashはどこにあるの」「まだない」「すぐできるの」「いや、それは上級編」「じゃあここにかかなくていいじゃない。それりんごを1個2個3個って数えている幼児に1×3の説明してるみたいなもんだよ」
  • 「your machineの範囲はどこなの。内側の四角なの外側の四角なの」「外側」「じゃあ此処に書くなよ、人は近い方に関連付けるんだよ」
  • 「でリポジトリとインデックスはどういう関係なの、こっちの図では.gitの中にindexがあるけど、こっちの図ではリポジトリとインデックスは並んでるじゃん」
  • 「repositoryってファイルもwork treeってファイルもないけどindexってファイルはあるけど、もしかしてレベルの違う概念なんじゃないの」
  • 「addすると何が起こるの、具体的にはどこなの、indexってファイルに何か書き込まれるの?」「うん」「でそれがリポジトリに書き込まれるってどういうこと?」
  • 「なんでaddしてcommitするの?めんどくさい。1回でできる便利なコマンドないの?」「あるよ、git commit -aだよ(注:不正確な回答、一度もaddされてないファイルはこれではaddされない)」「じゃあなんでそれ使わないの」「ええと、ファイルAとファイルBが同時に変更されているけども、意味論的にはこの二つの変更が違う目的の変更であって分けて記録したいケースがありえるので」
  • 「追加したいファイルがたくさんあるとめんどくさいよね、ずらずら書いていいの?」「いいよ、*.cppもありだよ」「ワイルドカードも使えるのか、1つしかかけないのかと思った」
  • 「インデックスが『私は内であり外である』という哲学的な問いを投げかけてくる!『私はファイルであり概念でもある!』」

とりあえず必死にメモした物を文字おこしした。明日修正します。

Q: indexはrepositoryの中にあるのか外にあるのかどっちだ?
A: リポジトリの中にはindexとobjects(オブジェクトデータベース)があるが、このobjectsのことを「リポジトリ」と呼ぶ慣習があるため初めての人が混乱する、という結論でOK?