そろそろGitのことも思いだしてあげてください。




         2010/09/26
自己紹介

   名前          ひむら ともひこ

 ハンドルとか        ひむひむ えいる

  twitter        @eielh

             hiroshima.rbの運営
最近の活動とか      iPhoneアプリの作成
            いろいろお手伝いしてます
アジェンダ




•Gitについて
•デモ
  •windowsで。
  •コマンドラインで。
•githubをつかってみる。
•紹介程度にとどめておく話。
Gitについて

•バージョン管理システム
 •以前の状態に戻すことができる
 •変更履歴を調べることができる
•Git以外のバージョン管理システム
  •RCS
  •CVS
  •Subversion
  •Mercurial
  •Darcs
  •Bazaar
Subversionとの違い




•リポジトリが集中型ではなく分散型
  •集中型はリポジトリがひとつ。
  •分散型は利用者全員がリポジトリをもつ。
   •履歴の確認などにサーバにアクセスする必要がない
•差分管理ではない
  •以前の状態をそのまま保存している
インストール方法




•Windows
 •git extentions
 •http://code.google.com/p/gitextensions/downloads/list
  •msysgit
  •kdiff
  •git extentions
 •TortoiseGit (GUIクライアント)
 •http://code.google.com/p/tortoisegit/downloads/list

   •(使いやすいけど個人的には非推奨)
インストール方法




•Mac
 •git-osx-installer
  •http://code.google.com/p/git-osx-installer/downloads/list
  •Mac ports
   •sudo port install git-core
  •gitx (gitkの代用として)
  •http://gitx.frim.nl/
  •gitbox
  •http://gitbox.pierlis.com/
インストール方法




•その他
 •yum install git-core
 •apt-get install git-core
 •aptitude install git
 •emerge git
重要な用語

•リポジトリ
  •バージョン管理をする上で必要なものが保存される場所
•コミット
  •復元ポイント
  •ひとつ前のコミットやファイル構成、メッセージなどの情報
  をもっている
•ワークツリー
  •実際に展開されているファイルやディレクトリ
•ステージングエリア
  •次のコミットを作成するための環境
  •インデックスとよばれていることもある
デモ




     windowsでつかってみる
デモ やったこと




 •リポジトリを作る
 •ステージングエリアに追加する
 •コミットする
  •何度か繰り返す
 •過去の状態にもどる
 •ヒストリー
デモ2




      コマンドラインでつかってみる
デモ2 コマンドラインでつかってみる




•個人的な意見ですが Subversion に比べ簡単だと思う。
基本的なワークフロー



  プロジェクトのはじめに一度だけ行うこと


•リポジトリを作る or リポジトリをコピーする
  •git init (リポジトリを作る)
  •git clone [リポジトリのURL]
   •git clone user名@ホスト名:path/repo
   •git clone http://ホスト名:path/repo
   •git clone git://ホスト名:path/repo
基本的なワークフロー



 ファイルの編集を終えたら

•変更をステージングエリアに追加する
  •git add . (変更したファイルすべてを追加)
  •git add -u (一度でもコミットに含めたファイルのみ追加)
   •新規作成したファイルは追加されない
  •git add [filename] (filenameを追加する
•状況がわからなくなったら
  •git status
•何を変更したのか確認したい場合
  •git diff
基本的なワークフロー



 ステージングエリアの内容をコミットするとき


•コミットされる内容をみたいとき
  •git diff --cached
•コミットする
  •git commit -m メッセージ
  •git commit (エディタが起動する)
•状況がわからなくなったら
  •git status
githubを使う


•githubとは
  •gitのホスティング & SNS & Wiki
    •リポジトリをおく場所として利用できる
    •他の人の活動をみることができる
    •公開リポジトリであれば制限なし
     •ディスクは300MBまで
•初期設定
  •sshの公開鍵を作成する必要がある
    •ssh-keygen
     •cat /.ssh/id_rsa.pub
    •git-guiでも作成できる
    •アカウントの設定 > ssh公開鍵
githubを使う




•リポジトリの作成
  •ダッシュボード > 新しいリポジトリの作成
  •あとは指示通りに
•アバターの設定
  •http://ja.gravatar.com/
  •gitxなのでアイコンが表示されるようになる
  •E-mailで紐付けされるようです
githubを使う




            demo
githubを使う




•別のリポジトリに変更を送るには
  •git push を使用する
•別のリポジトリから変更を取得するには
  •git pull を使用する
•自前で外部向けのリポジトリを作成するには
  •gitosis を使うの便利
紹介程度の話 便利な機能




•git branch ブランチの利用
•git stash 変更の一時退避
•git bisect 2分探索による問題発生箇所検出
•git svn subversionのリポジトリとやりとりをする
•git tag コミットに名前をつける
•git log ログの確認
紹介程度の話 参考になるサイト、書籍


•Website
  •ProGit
   •http://progit.org/book/ja/
  •Git チュートリアル
   •http://www8.atwiki.jp/git_jp/pub/git-manual-jp/
   Documentation/user-manual.html
•書籍
  •入門Git
   • http://www.amazon.co.jp/%E5%85%A5%E9%96%80Git-
   %E6%BF%B1%E9%87%8E-%E7%B4%94-Junio-Hamano/dp/
   4798023809
Gitの構造
•Gitを構成するオブジェクト
  •内容をsha-1でハッシュしたものを名前とする
    •内容が同じであれば同じ名前になる!
  •オブジェクトの種類(主なもの)
    •blob
     •ファイルの中身そのもの
    •tree
     •ディレクトリの中身
    •commit
     •基準となるディクトリになるtreeを保持
     •親のコミットを保持
     •メッセージや著者などを保持
Gitの構造




•オブジェクトの中身をみてみる
  •git cat-file -p [オブジェクトの名前]
•オブジェクトの種類をみてみる
  •git cat-file -t [オブジェクトの名前]
•オブジェクトの保存場所
  •.git/objects
ご静聴ありがとうございました。

git-webtouchmeeting