Download - Git
![Page 1: Git](https://reader033.vdocuments.pub/reader033/viewer/2022060110/555c2422d8b42a0b418b4b94/html5/thumbnails/1.jpg)
Git Powered by Rabbit 0.6.5
Git
とみたまさひろ2010-09-30
![Page 2: Git](https://reader033.vdocuments.pub/reader033/viewer/2022060110/555c2422d8b42a0b418b4b94/html5/thumbnails/2.jpg)
Git Powered by Rabbit 0.6.5
Git暦浅いので嘘書いてある
かもしれません1/44
![Page 3: Git](https://reader033.vdocuments.pub/reader033/viewer/2022060110/555c2422d8b42a0b418b4b94/html5/thumbnails/3.jpg)
Git Powered by Rabbit 0.6.5
Git
分散バージョン管理システム✓
2/44
![Page 4: Git](https://reader033.vdocuments.pub/reader033/viewer/2022060110/555c2422d8b42a0b418b4b94/html5/thumbnails/4.jpg)
Git Powered by Rabbit 0.6.5
分散バージョン管理
バージョン管理✓
分散✓
3/44
![Page 5: Git](https://reader033.vdocuments.pub/reader033/viewer/2022060110/555c2422d8b42a0b418b4b94/html5/thumbnails/5.jpg)
Git Powered by Rabbit 0.6.5
昭和のバージョン管理
% lsfile.rbfile.rb.origfile.rb.bakfile.rb.bak_20100615file.rb.bak_tommyfile.rb.new
4/44
![Page 6: Git](https://reader033.vdocuments.pub/reader033/viewer/2022060110/555c2422d8b42a0b418b4b94/html5/thumbnails/6.jpg)
Git Powered by Rabbit 0.6.5
昭和のバージョン管理
# 20100701 tommy コメントアウトはじまり# # 20100615 tommy コメントアウトはじまり# # var = 123# # 20100615 tommy コメントアウトおわり# var = 456# 20100701 tommy コメントアウトおわりvar = 789
5/44
![Page 7: Git](https://reader033.vdocuments.pub/reader033/viewer/2022060110/555c2422d8b42a0b418b4b94/html5/thumbnails/7.jpg)
Git Powered by Rabbit 0.6.5
バージョン管理システム
誰がいつファイルをどのように変更したのかを記録
✓
任意の時点のものを取り出すことができる
✓
6/44
![Page 8: Git](https://reader033.vdocuments.pub/reader033/viewer/2022060110/555c2422d8b42a0b418b4b94/html5/thumbnails/8.jpg)
Git Powered by Rabbit 0.6.5
歴史SCCS, RCS
ファイル単体を管理✓
✓
CVSファイル群を管理✓
ネットワーク対応✓
✓
Subversionリポジトリ管理✓
✓
7/44
![Page 9: Git](https://reader033.vdocuments.pub/reader033/viewer/2022060110/555c2422d8b42a0b418b4b94/html5/thumbnails/9.jpg)
Git Powered by Rabbit 0.6.5
歴史
Git✓
Mercurial(HG)✓
Bazaar分散✓
✓
8/44
![Page 10: Git](https://reader033.vdocuments.pub/reader033/viewer/2022060110/555c2422d8b42a0b418b4b94/html5/thumbnails/10.jpg)
Git Powered by Rabbit 0.6.5
黒歴史
VSS✓
9/44
![Page 11: Git](https://reader033.vdocuments.pub/reader033/viewer/2022060110/555c2422d8b42a0b418b4b94/html5/thumbnails/11.jpg)
Git Powered by Rabbit 0.6.5
集中型と分散型Subversion
リポジトリは1つ✓
中央集中型✓
リビジョン番号がインクリメンタル✓
✓
Gitリポジトリは複数✓
ユーザー毎に1個以上✓
16進40桁のコミット名✓
✓
10/44
![Page 12: Git](https://reader033.vdocuments.pub/reader033/viewer/2022060110/555c2422d8b42a0b418b4b94/html5/thumbnails/12.jpg)
Git Powered by Rabbit 0.6.5
集中型
commit すると全員に影響する✓
ネットワークが繋がってないと commit 不可
✓
11/44
![Page 13: Git](https://reader033.vdocuments.pub/reader033/viewer/2022060110/555c2422d8b42a0b418b4b94/html5/thumbnails/13.jpg)
Git Powered by Rabbit 0.6.5
Subversion
ブランチ、タグの仕組みがない運用で回避✓
✓
マージがへぼいマージのログメッセージは人力✓
✓
12/44
![Page 14: Git](https://reader033.vdocuments.pub/reader033/viewer/2022060110/555c2422d8b42a0b418b4b94/html5/thumbnails/14.jpg)
Git Powered by Rabbit 0.6.5
分散型/Git
自分のPCにリポジトリがある✓
いつでも commit できる✓
まとまったらリモートに push✓
マージが自動/速い/賢い✓
13/44
![Page 15: Git](https://reader033.vdocuments.pub/reader033/viewer/2022060110/555c2422d8b42a0b418b4b94/html5/thumbnails/15.jpg)
Git Powered by Rabbit 0.6.5
Git
Linus Torvalds が開始✓
今のGitのプロジェクトリーダーは日本人
✓
14/44
![Page 16: Git](https://reader033.vdocuments.pub/reader033/viewer/2022060110/555c2422d8b42a0b418b4b94/html5/thumbnails/16.jpg)
Git Powered by Rabbit 0.6.5
入門Gitおすすめ
15/44
![Page 17: Git](https://reader033.vdocuments.pub/reader033/viewer/2022060110/555c2422d8b42a0b418b4b94/html5/thumbnails/17.jpg)
Git Powered by Rabbit 0.6.5
インストール
Ubuntu/Debian
# aptitude install git-core
16/44
![Page 18: Git](https://reader033.vdocuments.pub/reader033/viewer/2022060110/555c2422d8b42a0b418b4b94/html5/thumbnails/18.jpg)
Git Powered by Rabbit 0.6.5
インストールWindows
msysgit
http://code.google.com/p/msysgit/
TortoiseGit
http://code.google.com/p/tortoisegit/
Git Extensions
http://code.google.com/p/gitextensions/ 17/44
![Page 19: Git](https://reader033.vdocuments.pub/reader033/viewer/2022060110/555c2422d8b42a0b418b4b94/html5/thumbnails/19.jpg)
Git Powered by Rabbit 0.6.5
初期設定
名前とメールアドレスの登録など
$ git config --global user.name 'TOMITA Masahiro'$ git config --global user.email '[email protected]'$ git config --global color.ui auto
18/44
![Page 20: Git](https://reader033.vdocuments.pub/reader033/viewer/2022060110/555c2422d8b42a0b418b4b94/html5/thumbnails/20.jpg)
Git Powered by Rabbit 0.6.5
リポジトリの作成
$ git init
カレントディレクトリがリポジトリ兼作業ディレクトリになる
19/44
![Page 21: Git](https://reader033.vdocuments.pub/reader033/viewer/2022060110/555c2422d8b42a0b418b4b94/html5/thumbnails/21.jpg)
Git Powered by Rabbit 0.6.5
複製して作成
$ git clone http://github.com/tmtm/mailparser
別のリポジトリから複製して自分用リポジトリを作成する
✓
ログもブランチも含めて全部コピー✓
20/44
![Page 22: Git](https://reader033.vdocuments.pub/reader033/viewer/2022060110/555c2422d8b42a0b418b4b94/html5/thumbnails/22.jpg)
Git Powered by Rabbit 0.6.5
状態遷移
21/44
![Page 23: Git](https://reader033.vdocuments.pub/reader033/viewer/2022060110/555c2422d8b42a0b418b4b94/html5/thumbnails/23.jpg)
Git Powered by Rabbit 0.6.5
ファイルの追加&コミット
$ touch file$ git add file$ git commit -m 'add file'
22/44
![Page 24: Git](https://reader033.vdocuments.pub/reader033/viewer/2022060110/555c2422d8b42a0b418b4b94/html5/thumbnails/24.jpg)
Git Powered by Rabbit 0.6.5
ファイルの変更&コミット
$ vi file$ git add file$ git commit -m 'modify file'
23/44
![Page 25: Git](https://reader033.vdocuments.pub/reader033/viewer/2022060110/555c2422d8b42a0b418b4b94/html5/thumbnails/25.jpg)
Git Powered by Rabbit 0.6.5
インデックスとコミット
$ echo line1 > file$ git add file$ git commit -m 'add line1'$ echo line2 >> file$ git add file$ echo line3 >> file
24/44
![Page 26: Git](https://reader033.vdocuments.pub/reader033/viewer/2022060110/555c2422d8b42a0b418b4b94/html5/thumbnails/26.jpg)
Git Powered by Rabbit 0.6.5
状態
$ git status# On branch master# Changes to be committed:# (use "git reset HEAD <file>..." to unstage)## modified: file## Changed but not updated:# (use "git add <file>..." to update what will# be committed)# (use "git checkout -- <file>..." to discard# changes in working directory)## modified: file#
25/44
![Page 27: Git](https://reader033.vdocuments.pub/reader033/viewer/2022060110/555c2422d8b42a0b418b4b94/html5/thumbnails/27.jpg)
Git Powered by Rabbit 0.6.5
差分表示
インデックスと作業ディレクトリの差分
$ git diff--- a/file+++ b/file@@ -1,2 +1,3 @@ line1 line2+line3
26/44
![Page 28: Git](https://reader033.vdocuments.pub/reader033/viewer/2022060110/555c2422d8b42a0b418b4b94/html5/thumbnails/28.jpg)
Git Powered by Rabbit 0.6.5
差分表示
リポジトリとインデックスの差分
$ git diff --cached--- a/file+++ b/file@@ -1 +1,2 @@ line1+line2
27/44
![Page 29: Git](https://reader033.vdocuments.pub/reader033/viewer/2022060110/555c2422d8b42a0b418b4b94/html5/thumbnails/29.jpg)
Git Powered by Rabbit 0.6.5
差分表示
リポジトリと作業ディレクトリの差分
$ git diff HEAD--- a/file+++ b/file@@ -1 +1,3 @@ line1+line2+line3
28/44
![Page 30: Git](https://reader033.vdocuments.pub/reader033/viewer/2022060110/555c2422d8b42a0b418b4b94/html5/thumbnails/30.jpg)
Git Powered by Rabbit 0.6.5
ログ
$ git logcommit 5af78980b5ffa64f63e6637e25e4bc82bd1d5ef2Author: TOMITA Masahiro <[email protected]>Date: Wed Sep 29 22:33:06 2010 +0900
add line3
commit 99388353c1e8960caa406bd6bb5dcf47a9a27c8eAuthor: TOMITA Masahiro <[email protected]>Date: Wed Sep 29 22:33:01 2010 +0900
add line2
commit 6c2faf7cd982a5eb468d672f188675ddf25634ddAuthor: TOMITA Masahiro <[email protected]>Date: Wed Sep 29 22:32:34 2010 +0900
add line1
29/44
![Page 31: Git](https://reader033.vdocuments.pub/reader033/viewer/2022060110/555c2422d8b42a0b418b4b94/html5/thumbnails/31.jpg)
Git Powered by Rabbit 0.6.5
ログ
# ファイル名も表示$ git log --name-status
# 内容の差分も表示$ git log -p
30/44
![Page 32: Git](https://reader033.vdocuments.pub/reader033/viewer/2022060110/555c2422d8b42a0b418b4b94/html5/thumbnails/32.jpg)
Git Powered by Rabbit 0.6.5
コミット名16進数40桁の識別子
ファイル名や内容等を SHA-1 ハッシュ化したもの
✓
たいていは先頭 5桁くらいで判別可能✓
✓
先頭は HEAD で参照可能✓
HEAD^ 一つ前✓
HEAD~3 三つ前✓31/44
![Page 33: Git](https://reader033.vdocuments.pub/reader033/viewer/2022060110/555c2422d8b42a0b418b4b94/html5/thumbnails/33.jpg)
Git Powered by Rabbit 0.6.5
タグ
コミット名に名前をつける
$ git tag v0.1 6c2fa$ git tag v0.2 99388$ git tag v0.3 5af78$ git tag ← タグ一覧表示v0.1v0.2v0.3
32/44
![Page 34: Git](https://reader033.vdocuments.pub/reader033/viewer/2022060110/555c2422d8b42a0b418b4b94/html5/thumbnails/34.jpg)
Git Powered by Rabbit 0.6.5
特定コミットの詳細
$ git show v0.2commit 99388353c1e8960caa406bd6bb5dcf47a9a27c8eAuthor: TOMITA Masahiro <[email protected]>Date: Wed Sep 29 22:33:01 2010 +0900
add line2
diff --git a/file b/fileindex a29bdeb..c0d0fb4 100644--- a/file+++ b/file@@ -1 +1,2 @@ line1+line2
33/44
![Page 35: Git](https://reader033.vdocuments.pub/reader033/viewer/2022060110/555c2422d8b42a0b418b4b94/html5/thumbnails/35.jpg)
Git Powered by Rabbit 0.6.5
ブランチ
別の歴史を作る
A---B---C---D---E ← master \ F---G ← Cから派生したブランチ
34/44
![Page 36: Git](https://reader033.vdocuments.pub/reader033/viewer/2022060110/555c2422d8b42a0b418b4b94/html5/thumbnails/36.jpg)
Git Powered by Rabbit 0.6.5
ブランチ
$ git branch ← ブランチ一覧* master ← 現在のブランチには * がつく$ git branch b0.2 v0.2 ← v0.2 から b0.2 ブランチを作成$ git branch b0.2* master$ git checkout b0.2 ← b0.2 に切り替え$ git branch * b0.2 master
35/44
![Page 37: Git](https://reader033.vdocuments.pub/reader033/viewer/2022060110/555c2422d8b42a0b418b4b94/html5/thumbnails/37.jpg)
Git Powered by Rabbit 0.6.5
マージ
ログメッセージも含みすべてマージ
$ git branch hoge ...
C---E---G hoge /A---B---D---F master
$ git checkout master$ git merge hoge
C---E---G hoge / \A---B---D----F----H master
36/44
![Page 38: Git](https://reader033.vdocuments.pub/reader033/viewer/2022060110/555c2422d8b42a0b418b4b94/html5/thumbnails/38.jpg)
Git Powered by Rabbit 0.6.5
リモートリポジトリ
別のリポジトリ(同じマシン上にあっても)
✓
git clone で作成すると、origin として登録される
$ git clone http://github.com/tmtm/mailparser.git$ cd mailparser$ git remoteorigin$ git remote -vorigin http://github.com/tmtm/mailparser.git (fetch)origin http://github.com/tmtm/mailparser.git (push)
✓
37/44
![Page 39: Git](https://reader033.vdocuments.pub/reader033/viewer/2022060110/555c2422d8b42a0b418b4b94/html5/thumbnails/39.jpg)
Git Powered by Rabbit 0.6.5
リモートリポジトリ
後でリモートの追加も可能
$ git init$ git remote add origin http://github.com/tmtm/mailparser.git$ git remote -vorigin http://github.com/tmtm/mailparser.git (fetch)origin http://github.com/tmtm/mailparser.git (push)
38/44
![Page 40: Git](https://reader033.vdocuments.pub/reader033/viewer/2022060110/555c2422d8b42a0b418b4b94/html5/thumbnails/40.jpg)
Git Powered by Rabbit 0.6.5
リモートリポジトリgit fetch
リモートをローカルに取り込む✓
✓
git pullリモートのローカルに取り込み、現在のブランチにマージする
✓
✓
git pushローカルの変更をリモートに反映させる
✓
✓
39/44
![Page 41: Git](https://reader033.vdocuments.pub/reader033/viewer/2022060110/555c2422d8b42a0b418b4b94/html5/thumbnails/41.jpg)
Git Powered by Rabbit 0.6.5
リモートブランチ
リモートブランチはローカルブランチとは異なる
✓
「git branch -r」で表示される✓
ローカルに反映させるにはマージ✓
40/44
![Page 42: Git](https://reader033.vdocuments.pub/reader033/viewer/2022060110/555c2422d8b42a0b418b4b94/html5/thumbnails/42.jpg)
Git Powered by Rabbit 0.6.5
タグ
タグは自動的には同期しない。✓
ローカルタグをリモートに反映させるには git push --tags
✓
41/44
![Page 43: Git](https://reader033.vdocuments.pub/reader033/viewer/2022060110/555c2422d8b42a0b418b4b94/html5/thumbnails/43.jpg)
Git Powered by Rabbit 0.6.5
pull
git pull は fetch 後 merge
A---B---C---D---E \ / a---b---c
42/44
![Page 44: Git](https://reader033.vdocuments.pub/reader033/viewer/2022060110/555c2422d8b42a0b418b4b94/html5/thumbnails/44.jpg)
Git Powered by Rabbit 0.6.5
rebase
「git pull --rebase」で rebase される
A---B---a---b---c---C---D---E
43/44
![Page 45: Git](https://reader033.vdocuments.pub/reader033/viewer/2022060110/555c2422d8b42a0b418b4b94/html5/thumbnails/45.jpg)
Git Powered by Rabbit 0.6.5
以上44/44