Git

3,901 views

Published on

Published in: Technology
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,901
On SlideShare
0
From Embeds
0
Number of Embeds
177
Actions
Shares
0
Downloads
23
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

Git

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

×