2013年4月21日日曜日

Git天空闘技場に参加

おつかれさまです。ZuQ9->Nnです。

4月20日(土)Git天空闘技場が開催されたので参加しました。
場所は、大田区の男女平等推進センター エセナおおた、
午後13時開始の10名の少数勉強会です。

最初、神速さんから「バージョン管理とgitの基礎」のセッションがありました。
Gitの勉強会なのに、いきなりpullは使わない方がいいなどと
よくあるGitの勉強会とは少し違ったおもむき

最初はsvnなど中央集中型バーション管理全体の説明、
svnの特徴などの説明があり、
次にGit等の分散型のバーション管理の説明、比較など
ここらへんはベタですね。。

Gitの特徴として
  • ローカルの操作が速い
  • ローカルの変更は他のユーザーに影響しない
  • 可用性が高い
  • マージが安全
  • 変更履歴の編集が可能
次にGitのオブジェクトの説明として
  • blob : ファイルの中身を表すオブジェクト
  • tree : ディレクトリの中身と各blobとの対応を表すオブジェクト
  • commit : 履歴に対応するオブジェクト
  • tag : タグを対応するオブジェクト
そのあとは各オブジェクトに対して詳しい説明がありました。

次に、Gitの内部構想。
  • .git/HEAD
  • .git/config
  • .git/index
  • objects/
  • hooks/
  • refs/
今回関係あるもののみを抜粋されて説明

次に、ステージングエリアの説明、
なぜ、ステージングエリアがあるのか?とうことに対して
 一般的なDVCS
       ファイル単位で変更をコミット
git
      1ファイルの1部分のみをコミット可能
    ・バグ修正、リファクタリングを別でコミット
    ・ファイルを一部だけ元の状態に戻す
→意味のある変更単位でコミットできる
とのこと。。

ちなみに、勉強会のタイトルになっている「天空競技場」というのは
HUNTER × HUNTERという漫画のネタで
スライドにも階数が出てきてここらへん元ネタがわかるかも
試されていたようです。。

ここでいったん休憩となりその後はハンズオン。

ハンズオンのルールとして
  • コミットのタイミングでオブジェクトの図をノートに書く
  • リポジトリの内部を見る
基本はコマンドラインで行ないました。
最初はREDMEファイルを作成。
git initして、REDMEをgit add、REDMEをgit commit

.git/の中身を確認してobjects/はinfoとpackだけ
HEADの中身がmasterになっている、refsの中身が空でした。

別のファイル(僕はTESTファイルを作成)を作って、
add & commitしてみる
cat-fileを作ってノートに図を書く、
2回くらいcommitしてみる。

最初にcommitしたREADMEにcheckoutで戻り
READMEファイルのみがあるのを確認し。
ここで再び休憩。休憩中、スゥーツが振る舞われました。


休憩後は無名ブランチを作る。git merge --no-ff マージコミットを行い
fast-fowardの箇所は神速さんのプログ を各自で読みながら学習。
ブランチを手作り、タグなんかも手作りしてみました。

そのあとgit cherry-pickの説明があり
最後はgithubのリポジトリを持ってきてgit remote addなどを行いました

途中、作業を間違えてしまうなど、ところどころ
やっている内容が??ってなる時もありましたが
なんとかついていくことが出来ました。

ハンズオンだったので座学よりは理解度が高いのですが
ただ、きっちりと理解できたか?と言われると。。
まだ、なんとなーくといった感覚がつよかったです。

個人的なKPTとして
Keep
  gitの学習をつづける
Problem
  コマンドを間違えて作業に手間取り
  自分が何をやっているのか??と
  なってしまうことが多かった
Try
  gitのコマンドをきっちりと覚える
  gitコマンドのチートシートなどを覚える