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 の仕組み

421 views

Published on

Published in: Technology
  • Be the first to comment

  • Be the first to like this

(工事中) Git の仕組み

  1. 1. (工事中) Git の仕組み 開発部 齋藤 輝明
  2. 2. 入門Git 1. gitとは 2. gitの基本概念 3. インストールと初期構成 4. 独りで使う 5. 2か所で使う 6. グループで使う 7. ブランチを使った開発 8. 分散環境とブランチとの関連 9. 変更履歴を追いかける10. パッチ・べースのワークフロー11. ゴミファイルの無視12. 構成変数13. リモート・リポジトリ定義14. ファイル・アトリビュート15. 歴史の2分探索16. 間違いからの回復17. フック・メカニズム18. リポジトリの出版公開19. gitの周辺
  3. 3. アジェンダ1. Git って何?おいしいの?2. Git はオブジェクトの集合体で管理するよ!3. ブランチ / タグはただのポインタだよ!4. コミットは 3 層を意識しよう!5. merge! cherry-pick! rebase!
  4. 4. アジェンダ1. Git って何?おいしいの?コマンドの使い方とかを2. Git はオブジェクトの集合体で管理するよ!教えてほしい?3. ブランチ / タグはただのポインタだよ!本を読むか、Google 先生に4. コミットは 3 層を意識しよう!訊いてください。5. merge! cherry-pick! rebase!
  5. 5. アジェンダ1. Git って何?おいしいの?2. Git はオブジェクトの集合体で管理するよ!3. ブランチ / タグはただのポインタだよ!4. コミットは 3 層を意識しよう!5. merge! cherry-pick! rebase!
  6. 6. Git とは?● オープンソースで開発されているバージョン管 理システム● Linus Torvalds が Linux カーネルのソース管 理のために開発を始めたツール● 種類はバージョン管理システムの分散型に含ま れる
  7. 7. 集中型 (CVS, Subversion) リポジトリ up update da it mm te commit co co te m da mi t up ファイル・ディレクトリ群 ファイル・ディレクトリ群 ファイル・ディレクトリ群
  8. 8. 分散型 (Git) 共用リポジトリ fe tch h p us pu fetch ch sh push fet ローカルリポジトリ ローカルリポジトリ ローカルリポジトリ commit commit commitファイル・ディレクトリ群 ファイル・ディレクトリ群 ファイル・ディレクトリ群
  9. 9. Subversion の作業例> svn update # リポジトリの修正をローカルのファイル・ディレクトリ群に> 反映> emacs test1.js # test1.js をエディタで修正> svn commit # test1.js をリポジトリに反映>> emacs test2.js # test2.js をエディタで修正> git commit # test2.js をリポジトリに反映
  10. 10. Git の作業例> git fetch # 共用リポジトリから修正差分を取得> git merge origin/master # ローカルリポジトリにマージ>> emacs test1.js # test1.js をエディタで修正> git add test1.js # test1.js をコミット対象に指定> git commit # コミット対象のものをローカルリポジトリににコミット>> emacs test2.js # test2.js をエディタで修正> git add test2.js # test2.js をコミット対象に指定> git commit # コミット対象のものをローカルリポジトリににコミット>> git push # ローカルリポジトリの修正内容を共用リポジトリに反 映
  11. 11. Git の作業例 (簡略化)> git pull # 共用リポジトリから修正差分を取得して、ローカルリ> ポジトリにマージ> emacs test1.js # test1.js をエディタで修正> git commit -a # 修正されたファイル群をローカルリポジトリにコミット>> emacs test2.js # test2.js をエディタで修正> git commit -a # 修正されたファイル群をローカルリポジトリににコミッ ト> # ローカルリポジトリの修正内容を共用リポジトリに反> git push 映
  12. 12. 分散型の特長● ネットワークから分離されている環境でも、ロー カルのリポジトリ中で仕事が続けられる● 他人に悪影響を及ぼすことを恐れずに、大規模 な実験的な変更を自由に行ない、その途中経 過を記録しておくことができる● まとまった変更がいったん完成した時点で、履 歴を見なおして、適切な形に書き直してから公 開することができる
  13. 13. アジェンダ1. Git って何?おいしいの?2. Git はオブジェクトの集合体で管理するよ!3. ブランチ / タグはただのポインタだよ!4. コミットは 3 層を意識しよう!5. merge! cherry-pick! rebase!
  14. 14. Git はオブジェクト● Git は「オブジェクト」と呼ばれるデータの集合体● オブジェクトの内容を基に生成されたハッシュを キーとした Key Value Storeで管理されている● .git/objects 下に格納されている
  15. 15. 主なオブジェクトの種類● blob ○ ファイルの中身を表す● tree ○ ディレクトリの中身を表す● commit ○ 修正差分を表す
  16. 16. オブジェクトの構造 オブジェクト名 ヘッダ情報(型と長さ)SHA-1ハッシュ オブジェクトの内容 (型により異なる)
  17. 17. blob オブジェクトの例bbc4538... blob 538 #include <studio.h> int main(void) { printf("Hello World!"); }
  18. 18. tree オブジェクトの例b1242d7... tree 224 100644 bbc4538... README 040000 428b354... lib 100755 bfef14a5... start.js
  19. 19. tree オブジェクトの例b1242d7... tree 224 100644 bbc4538... README 040000 428b354... lib 100755 bfef14a5... start.js 型を表す オブジェクト名
  20. 20. ディレクトリ・ファイルの表現例出典:http://www.progit.org/book/ja/Git%E3%81%AE%E5%86%85%E5%81%B4-Git%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88

×