ひとりぎっと 〜ひとりで使うバージョン管理システム導入編〜

34
ひとりぎっと ひとりで使うバージョン管理システム導入編 吉田 太一郎 2011514日土曜日

description

2011/05/21 at NAGASAKI-IT hands-on Spring 2011 http://atnd.org/events/15375

Transcript of ひとりぎっと 〜ひとりで使うバージョン管理システム導入編〜

Page 1: ひとりぎっと 〜ひとりで使うバージョン管理システム導入編〜

ひとりぎっとひとりで使うバージョン管理システム導入編

吉田 太一郎

2011年5月14日土曜日

Page 2: ひとりぎっと 〜ひとりで使うバージョン管理システム導入編〜

自己紹介•吉田 太一郎•有限会社ランカードコム•@dataich•基本Web•趣味でiOSアプリとかMacアプリとか

2011年5月14日土曜日

Page 3: ひとりぎっと 〜ひとりで使うバージョン管理システム導入編〜

バージョン管理システム

• 以前の状態に戻れる• 変更履歴を調べる• 論理的変更をひとまとめにして記録する• 何を、何故、誰が変更したかを記録する

2011年5月14日土曜日

Page 4: ひとりぎっと 〜ひとりで使うバージョン管理システム導入編〜

バージョン管理のフロー

• リポジトリからソースコードを取得• ソースコードを編集• リポジトリへ編集内容を記録(コミット)

2011年5月14日土曜日

Page 5: ひとりぎっと 〜ひとりで使うバージョン管理システム導入編〜

集中型

• リポジトリは1つのみ• コミット、変更履歴の確認などを1つのリポジトリに対してのみ行う

2011年5月14日土曜日

Page 6: ひとりぎっと 〜ひとりで使うバージョン管理システム導入編〜

分散型• ユーザがそれぞれローカルリポジトリを持てる

• コミット、変更履歴の確認などをローカルリポジトリに対してのみ行う

• ローカルリポジトリと他のリポジトリ間で、必要なタイミングで変更履歴の受け渡しができる

2011年5月14日土曜日

Page 7: ひとりぎっと 〜ひとりで使うバージョン管理システム導入編〜

Git

•現在最も普及している分散型バージョン管理システム

• Linuxの創始者Linus氏が原型を開発•オープンソース(GPL V2)にて公開

2011年5月14日土曜日

Page 8: ひとりぎっと 〜ひとりで使うバージョン管理システム導入編〜

ひとりぎっと開始

2011年5月14日土曜日

Page 9: ひとりぎっと 〜ひとりで使うバージョン管理システム導入編〜

コミットまでの流れ

2011年5月14日土曜日

Page 10: ひとりぎっと 〜ひとりで使うバージョン管理システム導入編〜

git initGitリポジトリの作成

$ mkdir project$ cd project/$ git init

2011年5月14日土曜日

Page 11: ひとりぎっと 〜ひとりで使うバージョン管理システム導入編〜

git configGitに関する設定

$ git config --global \user.name ‘Taichiro Yoshida‘

$ git config --global \user.email [email protected]

$ git config --list

2011年5月14日土曜日

Page 12: ひとりぎっと 〜ひとりで使うバージョン管理システム導入編〜

git statusコミット予定などを確認

$ git status

ワーキングディレクトリ

ステージ(インデックス)

コミット

2011年5月14日土曜日

Page 13: ひとりぎっと 〜ひとりで使うバージョン管理システム導入編〜

git addコミット予定に追加

$ echo 'change1' > 1.txt$ git status$ git add 1.txt$ git status$ echo 'change1' > 2.txt$ echo 'change1' > 3.txt$ git status$ git add .$ git status

2011年5月14日土曜日

Page 14: ひとりぎっと 〜ひとりで使うバージョン管理システム導入編〜

git commitコミットする

$ git commit -m ‘最初のコミット’

2011年5月14日土曜日

Page 15: ひとりぎっと 〜ひとりで使うバージョン管理システム導入編〜

git log変更履歴を確認する

# リポジトリ(ブランチ)全体のログ$ git log

# 特定ファイルのみのログ$ git log 1.txt

2011年5月14日土曜日

Page 16: ひとりぎっと 〜ひとりで使うバージョン管理システム導入編〜

こんなことありませんか?1. リリース後、大きな改修を入れることに

2. たくさんのファイルをがっつり編集中

3. リリース済みのものにバグが発生し、早急に対応が必要になった

4. 改修中のものはまだリリースできないので、リリース済みのものを基本としてバグを直したい

5. しかし開発環境は改修中のソースでごちゃごちゃしてる・・・

2011年5月14日土曜日

Page 17: ひとりぎっと 〜ひとりで使うバージョン管理システム導入編〜

そこで

2011年5月14日土曜日

Page 18: ひとりぎっと 〜ひとりで使うバージョン管理システム導入編〜

ブランチ•作業場みたいなものと今日は考えよう•実は今も既にmasterという名のついたブランチで作業している

•ブランチは複数存在することができる•それぞれのブランチは履歴の中のどの時点にあたるかを保持している

2011年5月14日土曜日

Page 19: ひとりぎっと 〜ひとりで使うバージョン管理システム導入編〜

図にすると

2011年5月14日土曜日

Page 20: ひとりぎっと 〜ひとりで使うバージョン管理システム導入編〜

master --o

2011年5月14日土曜日

Page 21: ひとりぎっと 〜ひとりで使うバージョン管理システム導入編〜

master --o--o

2011年5月14日土曜日

Page 22: ひとりぎっと 〜ひとりで使うバージョン管理システム導入編〜

master --o--o \feature o

2011年5月14日土曜日

Page 23: ひとりぎっと 〜ひとりで使うバージョン管理システム導入編〜

master --o--o \feature o--o

2011年5月14日土曜日

Page 24: ひとりぎっと 〜ひとりで使うバージョン管理システム導入編〜

master --o--o--o \feature o--o

2011年5月14日土曜日

Page 25: ひとりぎっと 〜ひとりで使うバージョン管理システム導入編〜

master --o--o--o \feature o--o--o

2011年5月14日土曜日

Page 26: ひとりぎっと 〜ひとりで使うバージョン管理システム導入編〜

master --o--o--o------o \ /feature o--o--o

2011年5月14日土曜日

Page 27: ひとりぎっと 〜ひとりで使うバージョン管理システム導入編〜

master --o--o--o------o--o \ /feature o--o--o

2011年5月14日土曜日

Page 28: ひとりぎっと 〜ひとりで使うバージョン管理システム導入編〜

git branch

# ブランチを作成する$ git branch example1

#ブランチを確認する$ git branch

2011年5月14日土曜日

Page 29: ひとりぎっと 〜ひとりで使うバージョン管理システム導入編〜

git checkout#ブランチの切り替え$ git checkout example1

# 履歴の中の特定の時点に切り替える$ git checkout a18180b

# 上記に加えてそのままブランチを作成$ git checkout a18180b -b example2

2011年5月14日土曜日

Page 30: ひとりぎっと 〜ひとりで使うバージョン管理システム導入編〜

#ブランチ間の差分を確認$ git diff master example1

#ワーキングディレクトリとステージの差分$ git diff

#ステージとリポジトリの差分$ git diff --cached

git diff

2011年5月14日土曜日

Page 31: ひとりぎっと 〜ひとりで使うバージョン管理システム導入編〜

#今いるブランチに別ブランチの変更を取り込む$ git merge first-branch

git mergeブランチに別ブランチの変更を取り込む

2011年5月14日土曜日

Page 32: ひとりぎっと 〜ひとりで使うバージョン管理システム導入編〜

環境構築• Mac• Homebrew• MacPorts• Gitのページからバイナリで• Windows(自信なし)• msysgit• Gitのページからexeで

2011年5月14日土曜日

Page 33: ひとりぎっと 〜ひとりで使うバージョン管理システム導入編〜

GUIもあるよ• Mac• Tower• Gitbox• Gity• Gitti• Windows(自信なし)• TortoiseGit

2011年5月14日土曜日

Page 34: ひとりぎっと 〜ひとりで使うバージョン管理システム導入編〜

次回へ• ブランチ間でのコミットのつまみ食い• 歴史を塗りかえるあのコミットをなかった事にしたい

• Subversionとの連携会社ではみんなSubversion使ってても、自分だけこっそりGit使えばいいじゃない

• などなど

2011年5月14日土曜日