GitHubで学ぶnバージョン管理

# : subtitle # サブタイトル : author

Masafumi Yokoyama

# : institution # 所属 : content-source

社内勉強会2013

: date

2013/04/26

: allotted-time

30m

: theme

nyankosakana

自己紹介

: システムズエンジニア

* 入社5年目 (('note:(高学年)'))

: フリーソフトウェアプログラマー

* Rubyist/Vimmer/Linuxer (('note:(属性)'))
* GitHub/RubyGems.org (('note:(活動場所)'))
* Rabbit Collaborators (('note:(It is this!)'))

話すこと

* バージョン管理について
* バージョン管理システムについて
* GitHubについて
* GitHubをブラウザから使う方法

バージョン管理システムをn紹介する理由

# blockquote
プログラマーにとって、\nとても便利なツールだから

キーワード

* 履歴 (('note:History'))
* 共有 (('note:Share'))
* 協業 (('note:Collaborate'))

話すこと

* ((*バージョン管理について*))
* バージョン管理システムについて
* GitHubについて
* GitHubをブラウザから使う方法

バージョン管理とは

((‘tag:center’)) ((‘tag:x-large’)) 変更履歴n ((‘note:へんこうりれき’))

バージョン管理とは

((‘tag:center’)) ((‘tag:x-large’)) ((*変更*))履歴n ((‘note:へんこうりれき’))

変更とは

* ファイルの追加・修正・削除
  * ソースコード
  * ドキュメント
  * 画像
  * etc...

変更とは

# blockquote
# title = 達人プログラマー
ヒント23: 常にソースコード\n管理を使用すること

常に

バージョン管理とは

((‘tag:center’)) ((‘tag:x-large’)) 変更((*履歴*))n ((‘note:へんこうりれき’))

履歴とは

# blockquote
# title = Life of Reason (翻訳:達人プログラマー)
変更を積み重ねて進歩するには、記憶力が不可欠である。
過去を記憶できないものは同じ過ちを繰り返すのである。

進歩

履歴の例

* UNDO (Ctrl + z)
* src_20130425_01.zip

((‘wait’))もっと便利に実現できる。

((‘wait’))((*そう、バージョン管理ならね。*))

バージョン管理

* 消えないUNDO
  * まるごとコピーより省容量
* 豊富なメタ情報を記録
  * 誰が変更したか
  * いつ変更したか
  * どのバージョンで変更したか

話すこと

* バージョン管理について
* ((*バージョン管理システムについて*))
* GitHubについて
* GitHubをブラウザから使う方法

バージョン管理システム

# blockquote
サッカー選手が((*スパイク*))を履くように、
プログラマーは((*バージョン管理システム*))を使う

サーバーとクライアント

: サーバー機能(リポジトリ)

* 変更履歴やメタ情報を保存

: クライアント機能

* ローカルのファイルをリポジトリへ登録
* リポジトリのファイルをローカルへ取得

用語

# RT
caption = バージョン管理システムの用語

登録, 取得

(('tag:center'))commit, checkout

集中型と分散型

: 集中型

* 各クライアントが、一つの共有リポジトリに接続する

: 分散型

* 各クライアントがリポジトリ機能を持つ
* リポジトリ間の連携が容易
* 通常、サーバー機に共有リポジトリを作成する

主なソフトウェア

: 集中型

* CVS
* Subversion

: 分散型

* Git
* Mercurial

主なソフトウェア

: 集中型

* CVS
* Subversion

: 分散型

* ((*Git*))
* Mercurial

用語

# RT
caption = Gitの用語(コマンド)

, 登録, 取得

(('tag:center'))ローカルとリポジトリ, add\ncommit, checkout
(('tag:center'))リポジトリ連携, push, pull

話すこと

* バージョン管理について
* バージョン管理システムについて
* ((*GitHubについて*))
* GitHubをブラウザから使う方法

GitHubを紹介する理由

# blockquote
とても簡単にバージョン管理\nできるツールだから

Not GitHub

* 自前のサーバーを構築
  * 物理構築・環境構築・運用が大変
* レンタルサーバー(VPSなど)
  * 環境構築・運用が大変
* ローカルのリポジトリのみ
  * クラッシュこわい
  * 他の場所で使えない

GitHub

* 簡単に共有リポジトリが使える
  * 無料
    * ((*全てのファイルが公開される*))
  * 人数制限なし
* ブラウザから簡単管理
* ブラウザだけでも使える

話すこと

* バージョン管理について
* バージョン管理システムについて
* GitHubについて
* ((*GitHubをブラウザから使う方法*))

How to GitHub

使える場所

* コマンドライン
* GUIアプリケーション
* ブラウザ
* ブラウザ (Gist)

コマンドライン

(1) ローカルにGitをインストール
(2) ブラウザからユーザー登録
(3) ローカルでSSH鍵作成
(4) ブラウザから公開鍵を登録
(5) ブラウザで共有リポジトリ作成
(6) 作業開始

ユーザー登録

: 参考 ((‘note:www.google.co.jp/search?q=github’))

GUIアプリケーション

: GitHub for Windows

* Windowsから簡単にGitHubを使えるGUIアプリケーション

((‘note:www.google.co.jp/search?q=github+for+windows’))

ブラウザから使う

(1) (('del:ローカルにGitをインストール'))
(2) ((*ブラウザからユーザー登録*))
(3) (('del:ローカルでSSH鍵作成'))
(4) (('del:ブラウザから公開鍵を登録'))
(5) ((*ブラウザで共有リポジトリ作成*))
(6) ((*作業開始*))

デモ

リポジトリ作成

# image
# src = images/hello/github-home.png
# relative_height = 100

リポジトリ作成

# image
# src = images/hello/create-repo.png
# relative_height = 100

ファイル作成

# image
# src = images/hello/home-created-repo.png
# relative_height = 100

ファイル作成

# image
# src = images/hello/edit-create.png
# relative_height = 100

ファイル作成

# image
# src = images/hello/edit-create-bottom.png
# relative_height = 100

ファイル作成

# image
# src = images/hello/home-created-file.png
# relative_height = 100

ファイル作成

# image
# src = images/hello/file-create.png
# relative_height = 100

ファイル作成

# image
# src = images/hello/history-create.png
# relative_height = 100

ファイル作成

# image
# src = images/hello/diff-create.png
# relative_height = 100

ファイル修正

# image
# src = images/hello/file-create.png
# relative_height = 100

ファイル修正

# image
# src = images/hello/edit-update.png
# relative_height = 100

ファイル修正

# image
# src = images/hello/edit-update-bottom.png
# relative_height = 100

ファイル修正

# image
# src = images/hello/file-update.png
# relative_height = 100

ファイル修正

# image
# src = images/hello/history-update.png
# relative_height = 100

差分比較

# image
# src = images/hello/diff-update.png
# relative_height = 100

差分比較

# image
# src = images/hello/blame.png
# relative_height = 100

ブラウザから使う (Gist)

(1) (('del:ローカルにGitをインストール'))
(2) ((*ブラウザからユーザー登録*))
(3) (('del:ローカルでSSH鍵作成'))
(4) (('del:ブラウザから公開鍵を登録'))
(5) (('del:ブラウザで共有リポジトリ作成'))
(6) ((*作業開始*))

ファイル作成

# image
# src = images/gist/new-gist.png
# relative_height = 100

ファイル作成

# image
# src = images/gist/gist-home-new.png
# relative_height = 100

ファイル修正

# image
# src = images/gist/gist-editor.png
# relative_height = 100

ファイル修正

# image
# src = images/gist/gist-home-updated.png
# relative_height = 100

差分比較

# image
# src = images/gist/gist-diff.png
# relative_height = 100

まとめ

バージョン管理システムをn紹介する理由

# blockquote
プログラマーにとって、\nとても便利なツールだから

GitHubを紹介する理由

# blockquote
とても簡単にバージョン管理\nできるツールだから

キーワード

* (('del:履歴')) (('note:History'))
* (('del:共有')) (('note:Share'))
* 協業 (('note:Collaborate'))
  * branch, trunk, merge
  * clone (fork), pull request

((‘tag:right’))つづく。