Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Git

4,509 views

Published on

Published in: Technology
  • Follow the link, new dating source: ❶❶❶ http://bit.ly/39mQKz3 ❶❶❶
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Dating for everyone is here: ❤❤❤ http://bit.ly/39mQKz3 ❤❤❤
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

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

×