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