Git 勉強会

ハンズオンのネタ検討な控えを。

何するか

  • Git とは何か、的な話?
    • 入門 Git の Chapter 1 とか 2 のあたり
  • Git の基本的なワークフロー
    • branch して云々
    • branch の push
    • git fetch と git merge origin/branch のあたり
  • 多分 markdown の話があるはずなので github と README.md でなんちゃらとか
  • 簡単に workflow の解説をして Git DOJO 説
  • http://blog.qnyp.com/2013/05/28/pull-request-for-github-beginners/
    • 一人二役で pull request の練習
    • まずやって見せてみる
  • ハンズオンで学んだ Git の使い方を何名かで纏めてみるとか?
    • これはその後の課題、ってことにしたい件
    • pull request や issue を使って SNS 的にドキュメンテーション
    • リモートリポジトリを共有

Git とは何か、的な話の材料

以下なあたりか。

  • 版管理の目的と機能
    • 以前の状態に戻れる
    • 変更履歴を調べる
    • ディレクトリ構造全体を一つの単位として記録する
    • 「なぜ」と「誰が」を記録する
  • 分散型システムが持つ特質
  • プロジェクトの状態の記録
    • blob とか tree というオブジェクト
      • ディレクトリエントリとファイルを表現?
  • プロジェクトの歴史の記録
    • コミットオブジェクト
      • 一つないし二つの親 (直前 commit)
  • コミット家系図
  • ブランチ
  • ワークツリーとリポジトリ
    • git での版管理の流れ
      • あるリビジョンの内容をワークツリーにチェックアウト
      • ワークツリー上のファイルに変更を加える
      • 変更後のワークツリーの内容を元に新しいリビジョンを作成してブランチが指し示すコミットをすすめる
  • インデックスとワークツリー
    • git ではインデックスに記録されたもののみが commit に記録される
  • merge
    • merge commit の parent は二つ
    • 3way merge
      • 共通祖先を見つける
      • merge 対象の二つの commit の変更内容と共通祖先のみを使って merge
      • 変更していない、あるいは変更結果が同じものはその結果を採用
      • どちらかが変更してどちらかが変更してないものは変更の結果を採用
      • 上記以外は競合 (conflict) とする