080726Ruby関西勉強会git

080726Ruby関西勉強会git

プレゼンテーション

git 分散レポジトリ

自己紹介

アジェンダ

  • git とは
  • git の使い方
    • 細かいことはやりません
  • github

git とは

  • 分散VCS
    • svn/CVS は単一レポジトリな VCS
  • 元は LinusLinux 用の VCS として開発
  • ここ一年で、数多くのプロジェクトが git に以降

はてなと git

  • 現在、ほとんどのコードが git
  • capistrano + git でサーバにデプロイ

単一?分散?の違い

  • 単一
    • レポジトリが真ん中に一個
    • 基本的に誰でもチェックアウトできる。コミットは権限がないと×
  • 分散
    • レポジトリを clone して誰でももてる
    • 誰でもローカルならコミットできる。権限があればリモートにpush(コミット)可能
    • push できなくても、相手が pull で反映を取り込める

git 何が便利なの?

  • 分散
    • 好きなだけ clone
    • 好きなとき commit
  • 動作が高速(svn と体感数倍~数十倍)
  • 手軽なブランチ作成
  • 高速・賢いマージ
  • commit/tree/blobsha1 で管理
    • sha1 で様々な操作が

git の使い方

インストール方法

ローカルで git

手元のコードを git で管理したい!

git init 
git add .
git commit

だけ!簡単!

git 基本コマンド

  • git init
    • 初期化
  • git add
    • ファイルの追加
    • コミット(索引)に追加
    • コンフリクトの解消
  • git commit
    • コミットする
    • git commit -a で svn commit ライクに
    • git commit -- file で指定したファイルをコミット
  • git checkout
    • ブランチ/ファイルのチェックアウト
  • git branch
    • ブランチの作成・削除

git ブランチ

  • git branch branchname でブランチの作成
  • git checkout branchname でブランチに移動
  • git merge branchname でブランチからマージ

git での開発

やってみよう

  • ブランチの作成
  • ブランチへ移動
    • ディレクトリ等移動しないで、ブランチが変わる!
      • svn 等になれてると、挙動にとまどう
  • ブランチでファイル修正、コミット
  • master にチェックアウト
  • さっきのブランチをマージ

公開レポジトリを使う

  • rails を例に
    • 次から説明するコマンドが解れば、何となく使えるハズ

git clone

公開レポジトリを、手元に複製

git clone git://github.com/rails/rails.git rails

git:// は git server の URI。pull (取り込み)専用。push は不可。

git log

log を表示

git log
git log --stat
git log --raw
git-log --author=David
git-log -Sto_proc activesupport/lib

git grep

git の管理下のファイルを grep。高速。

git grep to_proc
git grep to_proc activesupport/lib

git diff

diff 表示

git diff HEAD..HEAD^ # HEAD とその前
git diff v2.0.0..v2.1.0

git tag

タグ管理

git tag
git tag example
git checkout v2.0.0 # ファイル全部が変わるよ

git commit

clone したレポジトリは、書き換えることももちろん可能

git commit ...
git log # 変わっちゃってるよ!
git reset --hard origin/master # 大本の master に完全に戻す
git log # 無かったことになった

tig

  • コマンドラインの git viewer
  • 便利なので使おう

github

github

  • 誰でもgitレポジトリを作れる
    • パブリックなら無料
    • プライベートなら有料
  • fork して、好きなプロジェクトを開発
    • 俺俺 fork 作り放題
    • あとから誰でも参照できるメリット
    • pull request で取り込んで!と伝えられる

githubruby

github デモ

  • レポジトリの作成
  • 他人のを fork, commit, push

gist

git まとめ

  • メリット
  • デメリット

git メリット

  • 分散である
    • どこでもレポジトリ
    • オープンソースの加速
  • 便利な git-* ツール
  • github の存在

git デメリット

  • 導入コストが高い
    • 覚えることが多い
    • CVS/svn と比べると最初解らないことだらけ
      • ただ、一度マスターすると様々なことができる
  • windows で使いにくい
    • エンジニア以外にはおすすめできない