バージョン管理とgit
2013/11/21(木) @21cafe
自己紹介
神速 @sinsoku_listy

git
バージョン
管理

git
なぜ必要?
履歴が見られる

いつ

誰が

理由: XXX のバグを修正

どこを
過去の状態に戻せる
複数人で作業ができる
マージ
(統合)
複数バージョンを管理できる

バージョン 2系

バージョン 1系
実験的な作業を行える

開発版

安定版
実験的な作業を行える

安定版
実験的な作業を行える

開発版

安定版
ファイルを安心して変更できる
どんな仕組み?
作業ディレクトリ
Project

src

リポジトリ
README
作業ディレクトリ

Project

src
リポジトリ
README

save 1
作業ディレクトリ

Project

src
リポジトリ
README

save 1

save 2
作業ディレクトリ

Project

src
リポジトリ
README

save 1

save 2

save 3
バージョン
管理

git
git の特徴

分散型

インデックス

ブランチ・タグ
履歴の作成

集中型(svn)

作業コピーの
更新

リポジトリ

作業コピー

README

Hello.java

README

Hello.java
rev: 3

README
の編集

rev: 2

Hello.java
の実装

rev: 1

README
の追加

集中型(svn)

リポジトリ
履歴の作成

分散型(git)

作業コピーの
更新

リポジトリ

作業コピー

README

Hello.java
履歴の作成

分散型(git)

作業コピー
の更新
履歴の送信
履歴の受信
作業コピー

リポジト
リ

リポジト
リ
履歴の作成

中央

作業コピー
の更新

分散型(git)
リポジトリ

履歴の送信
履歴の受信
作業コピー

ローカル
リポジトリ

リポジトリ
中央
リポジトリ
rev:
1af9b

リポジトリ

rev:
1af9b

README
の追加

README
の追加
中央
リポジトリ
rev:
1af9b

リポジトリ

rev:
1af9b

README
の追加

README
の追加

リポジトリ

rev:
1af9b

README
の追加
中央
リポジトリ
rev:
1af9b

rev:
5fde8

READMEの
編集

rev:
1af9b

README
の追加

リポジトリ

リポジトリ

README
の追加

rev:
9d6aa

Hello.java
の実装

rev:
1af9b

README
の追加
中央

rev:
5fde8

README
の編集

rev:
9d6aa

Hello.java
の実装

リポジトリ
rev:
1af9b

rev:
5fde8

READMEの
編集

rev:
1af9b

README
の追加

リポジトリ

リポジトリ

README
の追加

rev:
9d6aa

Hello.java
の実装

rev:
1af9b

README
の追加
rev: 5fde8?
中央

rev:
5fde8

README
の編集

rev:
9d6aa

Hello.java
の実装

リポジトリ
rev:
1af9b

rev:
5fde8

READMEの
編集

rev:
1af9b

README
の追加

リポジトリ

リポジトリ

README
の追加

rev:
9d6aa

Hello.java
の実装

rev:
1af9b

README
の追加
rev: 3

README
の編集

rev: 2

Hello.java
の実装

rev: 1

README
の追加

集中型(svn)

リポジトリ
コミット内容(日時、変更者 など)

SHA-1 変換器

16進数40桁
39fde84ab553783eab2b0443b7fe7300eb65119d
コミット内容(日時、変更者 など)

SHA-1 変換器

16進数40桁
39fde84ab553783eab2b0443b7fe7300eb65119d
git の特徴

分散型

インデックス

ブランチ・タグ
作業
ディレクトリ

・
・
・

インデックス

リポジトリ
作業
ディレクトリ

インデックス

add

・
・
・

リポジトリ
作業
ディレクトリ

インデックス

リポジトリ

commit

・
・
・
作業
ディレクトリ

インデックス

add

・
・
・

リポジトリ
作業
ディレクトリ

インデックス

リポジトリ

commit

・
・
・
なぜインデックスが
あるのか?
行単位でのコミット

コミット前の確認
git の特徴

分散型

インデックス

ブランチ・タグ
ブランチ
stable

rev: 1af9b

rev: 5fde8

$ git branch stable 5fde8
$ git checkout stable
ブランチ
stable

rev: 1af9b

rev: 5fde8

$ (ファイルの変更)
$ git add
ブランチ
stable

rev: 1af9b

rev: 5fde8

$ git commit -m “update”

rev: 9d6aa
3種類のタグ

軽量タグ

アノテーション
付きタグ

署名付きタグ
軽量タグ

rev: 1af9b

rev: 5fde8
v1.0.0

$ git show 5fde8
$ git show v1.0.0
軽量タグ

rev: 1af9b

rev: 5fde8

rev: 9d6aa
v1.0.0

$ git show 5fde8
$ git show v1.0.0
/

om
github.c
https://
最も有名なGitのホスティングサービス
● 公開リポジトリ無制限
(非公開は有料)
● Web上でファイルが見られる
● 使い易い画面
● Pull Request(プルリクエスト)

Octocat
git 関連ページの紹介
● Git公式サイト http://git-scm.com/
● msysgit - Git for Windows
https://code.google.com/p/msysgit/
● GitHub https://github.com/
ご清聴ありがとうございました

バージョン管理とGit