狠狠撸

狠狠撸Share a Scribd company logo
(工事中) Git の仕組み
     開発部
    齋藤 輝明
入門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の周辺
アジェンダ

1. Git って何?おいしいの?

2. Git はオブジェクトの集合体で管理するよ!

3. ブランチ / タグはただのポインタだよ!

4. コミットは 3 層を意識しよう!

5. merge! cherry-pick! rebase!
アジェンダ

1. Git って何?おいしいの?
コマンドの使い方とかを
2. Git はオブジェクトの集合体で管理するよ!
教えてほしい?
3. ブランチ / タグはただのポインタだよ!
本を読むか、Google 先生に
4. コミットは 3 層を意識しよう!
訊いてください。
5. merge! cherry-pick! rebase!
アジェンダ

1. Git って何?おいしいの?

2. Git はオブジェクトの集合体で管理するよ!

3. ブランチ / タグはただのポインタだよ!

4. コミットは 3 層を意識しよう!

5. merge! cherry-pick! rebase!
Git とは?

●   オープンソースで開発されているバージョン管
    理システム

●   Linus Torvalds が Linux カーネルのソース管
    理のために開発を始めたツール

●   種類はバージョン管理システムの分散型に含ま
    れる
集中型 (CVS, Subversion)

                               リポジトリ




                                                       up
                                   update




                                                       da
             it
         mm




                                                        te
                          commit




                                            co
        co




                   te




                                               m
                  da




                                              mi
                                                   t
                  up




 ファイル?ディレクトリ群           ファイル?ディレクトリ群                   ファイル?ディレクトリ群
分散型 (Git)

                              共用リポジトリ                 fe
                                                        tch
               h
          p us
                                               pu




                                       fetch
                      ch                         sh




                             push
                   fet




 ローカルリポジトリ                 ローカルリポジトリ                       ローカルリポジトリ
                              commit




                                                           commit
 commit




ファイル?ディレクトリ群               ファイル?ディレクトリ群               ファイル?ディレクトリ群
Subversion の作業例
> svn update       # リポジトリの修正をローカルのファイル?ディレクトリ群に
>                  反映
> emacs test1.js   # test1.js をエディタで修正
> svn commit       # test1.js をリポジトリに反映
>
> emacs test2.js   # test2.js をエディタで修正
> git commit       # test2.js をリポジトリに反映
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                  # ローカルリポジトリの修正内容を共用リポジトリに反
                            映
Git の作業例 (簡略化)
> git pull         # 共用リポジトリから修正差分を取得して、ローカルリ
>                  ポジトリにマージ
> emacs test1.js   # test1.js をエディタで修正
> git commit -a    # 修正されたファイル群をローカルリポジトリにコミット
>
> emacs test2.js   # test2.js をエディタで修正
> git commit -a    # 修正されたファイル群をローカルリポジトリににコミッ
                   ト
>
                   # ローカルリポジトリの修正内容を共用リポジトリに反
> git push         映
分散型の特長

●   ネットワークから分離されている環境でも、ロー
    カルのリポジトリ中で仕事が続けられる

●   他人に悪影響を及ぼすことを恐れずに、大規模
    な実験的な変更を自由に行ない、その途中経
    過を記録しておくことができる

●   まとまった変更がいったん完成した時点で、履
    歴を見なおして、適切な形に書き直してから公
    開することができる
アジェンダ

1. Git って何?おいしいの?

2. Git はオブジェクトの集合体で管理するよ!

3. ブランチ / タグはただのポインタだよ!

4. コミットは 3 層を意識しよう!

5. merge! cherry-pick! rebase!
Git はオブジェクト

●   Git は「オブジェクト」と呼ばれるデータの集合体

●   オブジェクトの内容を基に生成されたハッシュを
    キーとした Key Value Storeで管理されている

●   .git/objects 下に格納されている
主なオブジェクトの種類

●   blob
    ○   ファイルの中身を表す


●   tree
    ○   ディレクトリの中身を表す


●   commit
    ○   修正差分を表す
オブジェクトの构造

        オブジェクト名




                  ヘッダ情報(型と長さ)

SHA-1
ハッシュ



                  オブジェクトの内容
                  (型により異なる)
blob オブジェクトの例

bbc4538...




                             blob 538

    #include <studio.h>

    int main(void) {
       printf("Hello World!");
    }
tree オブジェクトの例

b1242d7...




                         tree 224

    100644 bbc4538...    README
    040000 428b354...    lib
    100755 bfef14a5...   start.js
tree オブジェクトの例

b1242d7...




                         tree 224

    100644 bbc4538...    README
    040000 428b354...    lib
    100755 bfef14a5...   start.js
      型を表す   オブジェクト名
ディレクトリ?ファイルの表現例




出典:
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

More Related Content

What's hot (19)

Cakephp勉強会@tokyo #4
Cakephp勉強会@tokyo #4Cakephp勉強会@tokyo #4
Cakephp勉強会@tokyo #4
ichikaway
?
ほ?くの考えた最强の辫颈辫别濒颈苍别构成
ほ?くの考えた最强の辫颈辫别濒颈苍别构成ほ?くの考えた最强の辫颈辫别濒颈苍别构成
ほ?くの考えた最强の辫颈辫别濒颈苍别构成
Naoto Nishizono
?
Git pyfes201207-presen
Git pyfes201207-presenGit pyfes201207-presen
Git pyfes201207-presen
Kouhei Maeda
?
搁别诲颈蝉ととあるシステム
搁别诲颈蝉ととあるシステム搁别诲颈蝉ととあるシステム
搁别诲颈蝉ととあるシステム
Takehiro Torigaki
?
搁别诲颈蝉速习会蔼奥补苍迟别诲濒测
搁别诲颈蝉速习会蔼奥补苍迟别诲濒测搁别诲颈蝉速习会蔼奥补苍迟别诲濒测
搁别诲颈蝉速习会蔼奥补苍迟别诲濒测
Yoshinori Kawasaki
?
新生尝补驳辞辫耻蝉2017(仮称)
新生尝补驳辞辫耻蝉2017(仮称)新生尝补驳辞辫耻蝉2017(仮称)
新生尝补驳辞辫耻蝉2017(仮称)
Masaru Oki
?
颁辞肠辞补勉强会#33-意外に楽に使える濒颈产肠耻谤濒
颁辞肠辞补勉强会#33-意外に楽に使える濒颈产肠耻谤濒颁辞肠辞补勉强会#33-意外に楽に使える濒颈产肠耻谤濒
颁辞肠辞补勉强会#33-意外に楽に使える濒颈产肠耻谤濒
Masayuki Nii
?
惭别谤肠耻谤颈补濒コマンドの绍介
惭别谤肠耻谤颈补濒コマンドの绍介惭别谤肠耻谤颈补濒コマンドの绍介
惭别谤肠耻谤颈补濒コマンドの绍介
Tsutomu Takeuchi
?
とある奥别产公司での顿别产颈补苍システムの使い方。
とある奥别产公司での顿别产颈补苍システムの使い方。とある奥别产公司での顿别产颈补苍システムの使い方。
とある奥别产公司での顿别产颈补苍システムの使い方。
Kouhei Maeda
?
搁以外の研究ツール
搁以外の研究ツール搁以外の研究ツール
搁以外の研究ツール
弘毅 露崎
?
搁と厂蚕尝颈迟别で気軽にデータベース作成
搁と厂蚕尝颈迟别で気軽にデータベース作成搁と厂蚕尝颈迟别で気軽にデータベース作成
搁と厂蚕尝颈迟别で気軽にデータベース作成
弘毅 露崎
?
Ubuntuとコンテナ技術 What is LXD? and Why? 2015-12-08
Ubuntuとコンテナ技術 What is LXD? and Why? 2015-12-08Ubuntuとコンテナ技術 What is LXD? and Why? 2015-12-08
Ubuntuとコンテナ技術 What is LXD? and Why? 2015-12-08
Nobuto Murata
?
Lagopus.confの書式(for lagopus 0.1.x)
Lagopus.confの書式(for lagopus 0.1.x)Lagopus.confの書式(for lagopus 0.1.x)
Lagopus.confの書式(for lagopus 0.1.x)
Masaru Oki
?
Custom Package Building with Poudriere
Custom Package Building with PoudriereCustom Package Building with Poudriere
Custom Package Building with Poudriere
Yuichiro Naito
?
Cakephp勉強会@tokyo #4
Cakephp勉強会@tokyo #4Cakephp勉強会@tokyo #4
Cakephp勉強会@tokyo #4
ichikaway
?
ほ?くの考えた最强の辫颈辫别濒颈苍别构成
ほ?くの考えた最强の辫颈辫别濒颈苍别构成ほ?くの考えた最强の辫颈辫别濒颈苍别构成
ほ?くの考えた最强の辫颈辫别濒颈苍别构成
Naoto Nishizono
?
Git pyfes201207-presen
Git pyfes201207-presenGit pyfes201207-presen
Git pyfes201207-presen
Kouhei Maeda
?
搁别诲颈蝉ととあるシステム
搁别诲颈蝉ととあるシステム搁别诲颈蝉ととあるシステム
搁别诲颈蝉ととあるシステム
Takehiro Torigaki
?
搁别诲颈蝉速习会蔼奥补苍迟别诲濒测
搁别诲颈蝉速习会蔼奥补苍迟别诲濒测搁别诲颈蝉速习会蔼奥补苍迟别诲濒测
搁别诲颈蝉速习会蔼奥补苍迟别诲濒测
Yoshinori Kawasaki
?
新生尝补驳辞辫耻蝉2017(仮称)
新生尝补驳辞辫耻蝉2017(仮称)新生尝补驳辞辫耻蝉2017(仮称)
新生尝补驳辞辫耻蝉2017(仮称)
Masaru Oki
?
颁辞肠辞补勉强会#33-意外に楽に使える濒颈产肠耻谤濒
颁辞肠辞补勉强会#33-意外に楽に使える濒颈产肠耻谤濒颁辞肠辞补勉强会#33-意外に楽に使える濒颈产肠耻谤濒
颁辞肠辞补勉强会#33-意外に楽に使える濒颈产肠耻谤濒
Masayuki Nii
?
惭别谤肠耻谤颈补濒コマンドの绍介
惭别谤肠耻谤颈补濒コマンドの绍介惭别谤肠耻谤颈补濒コマンドの绍介
惭别谤肠耻谤颈补濒コマンドの绍介
Tsutomu Takeuchi
?
とある奥别产公司での顿别产颈补苍システムの使い方。
とある奥别产公司での顿别产颈补苍システムの使い方。とある奥别产公司での顿别产颈补苍システムの使い方。
とある奥别产公司での顿别产颈补苍システムの使い方。
Kouhei Maeda
?
搁以外の研究ツール
搁以外の研究ツール搁以外の研究ツール
搁以外の研究ツール
弘毅 露崎
?
搁と厂蚕尝颈迟别で気軽にデータベース作成
搁と厂蚕尝颈迟别で気軽にデータベース作成搁と厂蚕尝颈迟别で気軽にデータベース作成
搁と厂蚕尝颈迟别で気軽にデータベース作成
弘毅 露崎
?
Ubuntuとコンテナ技術 What is LXD? and Why? 2015-12-08
Ubuntuとコンテナ技術 What is LXD? and Why? 2015-12-08Ubuntuとコンテナ技術 What is LXD? and Why? 2015-12-08
Ubuntuとコンテナ技術 What is LXD? and Why? 2015-12-08
Nobuto Murata
?
Lagopus.confの書式(for lagopus 0.1.x)
Lagopus.confの書式(for lagopus 0.1.x)Lagopus.confの書式(for lagopus 0.1.x)
Lagopus.confの書式(for lagopus 0.1.x)
Masaru Oki
?
Custom Package Building with Poudriere
Custom Package Building with PoudriereCustom Package Building with Poudriere
Custom Package Building with Poudriere
Yuichiro Naito
?

Similar to (工事中) Git の仕組み (20)

バージョン管理システムチュートリアル
バージョン管理システムチュートリアルバージョン管理システムチュートリアル
バージョン管理システムチュートリアル
Ryo Igarashi
?
Git 実践入門
Git 実践入門Git 実践入門
Git 実践入門
Yasutaka Kanzaki
?
猫にはわからない骋颈迟讲座
猫にはわからない骋颈迟讲座猫にはわからない骋颈迟讲座
猫にはわからない骋颈迟讲座
Yusei Yamanaka
?
git 初めの一歩
git 初めの一歩git 初めの一歩
git 初めの一歩
Shin Yoshida
?
Git -分散バージョン管理システム-
Git -分散バージョン管理システム-Git -分散バージョン管理システム-
Git -分散バージョン管理システム-
Koji Shinba
?
Version Control System Tutorial バージョン管理システムチュートリアル
Version Control System Tutorial バージョン管理システムチュートリアルVersion Control System Tutorial バージョン管理システムチュートリアル
Version Control System Tutorial バージョン管理システムチュートリアル
Computational Materials Science Initiative
?
もしWordPressユーザーがGitを使ったら ?WordPressテーマを共同編集しよう?
もしWordPressユーザーがGitを使ったら ?WordPressテーマを共同編集しよう?もしWordPressユーザーがGitを使ったら ?WordPressテーマを共同編集しよう?
もしWordPressユーザーがGitを使ったら ?WordPressテーマを共同編集しよう?
Takashi Uemura
?
Next-L Enju 開発ワークショップ #02
Next-L Enju 開発ワークショップ #02Next-L Enju 開発ワークショップ #02
Next-L Enju 開発ワークショップ #02
Kosuke Tanabe
?
骋颈迟贬耻产ワークショッフ?
骋颈迟贬耻产ワークショッフ?骋颈迟贬耻产ワークショッフ?
骋颈迟贬耻产ワークショッフ?
Hiroaki Murayama
?
骋颈迟丑耻产入门2014
骋颈迟丑耻产入门2014骋颈迟丑耻产入门2014
骋颈迟丑耻产入门2014
Akihiko Shirai
?
Git 初心者講座 by forkwell
Git 初心者講座 by forkwellGit 初心者講座 by forkwell
Git 初心者講座 by forkwell
sinsoku listy
?
Git/GitHub
Git/GitHubGit/GitHub
Git/GitHub
Nariaki Tateiwa
?
VCS - Version Control System at Security and Programming camp 2011
VCS - Version Control System at Security and Programming camp 2011 VCS - Version Control System at Security and Programming camp 2011
VCS - Version Control System at Security and Programming camp 2011
Hiro Yoshioka
?
社会人になってから考えた GitHubを使った共同論文執筆 フロー編
社会人になってから考えた GitHubを使った共同論文執筆 フロー編社会人になってから考えた GitHubを使った共同論文執筆 フロー編
社会人になってから考えた GitHubを使った共同論文執筆 フロー編
yskw
?
骋颈迟&补尘辫;骋颈迟贬耻产入门
骋颈迟&补尘辫;骋颈迟贬耻产入门骋颈迟&补尘辫;骋颈迟贬耻产入门
骋颈迟&补尘辫;骋颈迟贬耻产入门
hideaki honda
?
ソフトウェア工学2023 08 GitHub
ソフトウェア工学2023 08 GitHubソフトウェア工学2023 08 GitHub
ソフトウェア工学2023 08 GitHub
Toru Tamaki
?
バージョン管理と骋颈迟
バージョン管理と骋颈迟バージョン管理と骋颈迟
バージョン管理と骋颈迟
sinsoku listy
?
バージョン管理システムチュートリアル
バージョン管理システムチュートリアルバージョン管理システムチュートリアル
バージョン管理システムチュートリアル
Ryo Igarashi
?
猫にはわからない骋颈迟讲座
猫にはわからない骋颈迟讲座猫にはわからない骋颈迟讲座
猫にはわからない骋颈迟讲座
Yusei Yamanaka
?
Git -分散バージョン管理システム-
Git -分散バージョン管理システム-Git -分散バージョン管理システム-
Git -分散バージョン管理システム-
Koji Shinba
?
Version Control System Tutorial バージョン管理システムチュートリアル
Version Control System Tutorial バージョン管理システムチュートリアルVersion Control System Tutorial バージョン管理システムチュートリアル
Version Control System Tutorial バージョン管理システムチュートリアル
Computational Materials Science Initiative
?
もしWordPressユーザーがGitを使ったら ?WordPressテーマを共同編集しよう?
もしWordPressユーザーがGitを使ったら ?WordPressテーマを共同編集しよう?もしWordPressユーザーがGitを使ったら ?WordPressテーマを共同編集しよう?
もしWordPressユーザーがGitを使ったら ?WordPressテーマを共同編集しよう?
Takashi Uemura
?
Next-L Enju 開発ワークショップ #02
Next-L Enju 開発ワークショップ #02Next-L Enju 開発ワークショップ #02
Next-L Enju 開発ワークショップ #02
Kosuke Tanabe
?
骋颈迟贬耻产ワークショッフ?
骋颈迟贬耻产ワークショッフ?骋颈迟贬耻产ワークショッフ?
骋颈迟贬耻产ワークショッフ?
Hiroaki Murayama
?
骋颈迟丑耻产入门2014
骋颈迟丑耻产入门2014骋颈迟丑耻产入门2014
骋颈迟丑耻产入门2014
Akihiko Shirai
?
Git 初心者講座 by forkwell
Git 初心者講座 by forkwellGit 初心者講座 by forkwell
Git 初心者講座 by forkwell
sinsoku listy
?
VCS - Version Control System at Security and Programming camp 2011
VCS - Version Control System at Security and Programming camp 2011 VCS - Version Control System at Security and Programming camp 2011
VCS - Version Control System at Security and Programming camp 2011
Hiro Yoshioka
?
社会人になってから考えた GitHubを使った共同論文執筆 フロー編
社会人になってから考えた GitHubを使った共同論文執筆 フロー編社会人になってから考えた GitHubを使った共同論文執筆 フロー編
社会人になってから考えた GitHubを使った共同論文執筆 フロー編
yskw
?
骋颈迟&补尘辫;骋颈迟贬耻产入门
骋颈迟&补尘辫;骋颈迟贬耻产入门骋颈迟&补尘辫;骋颈迟贬耻产入门
骋颈迟&补尘辫;骋颈迟贬耻产入门
hideaki honda
?
ソフトウェア工学2023 08 GitHub
ソフトウェア工学2023 08 GitHubソフトウェア工学2023 08 GitHub
ソフトウェア工学2023 08 GitHub
Toru Tamaki
?
バージョン管理と骋颈迟
バージョン管理と骋颈迟バージョン管理と骋颈迟
バージョン管理と骋颈迟
sinsoku listy
?

More from Teloo (6)

図とコード例で多分わかる React と flux (工事中)
図とコード例で多分わかる React と flux (工事中)図とコード例で多分わかる React と flux (工事中)
図とコード例で多分わかる React と flux (工事中)
Teloo
?
骋颈迟を理解するためにおさえておきたい3つの図(工事中)
骋颈迟を理解するためにおさえておきたい3つの図(工事中)骋颈迟を理解するためにおさえておきたい3つの図(工事中)
骋颈迟を理解するためにおさえておきたい3つの図(工事中)
Teloo
?
図でわかる骋颈迟
図でわかる骋颈迟図でわかる骋颈迟
図でわかる骋颈迟
Teloo
?
JS 6th edition reading circle part 3
JS 6th edition reading circle part 3JS 6th edition reading circle part 3
JS 6th edition reading circle part 3
Teloo
?
JS 6th edition reading circle part 2
JS 6th edition reading circle part 2JS 6th edition reading circle part 2
JS 6th edition reading circle part 2
Teloo
?
(工事中) Git の仕組み
(工事中) Git の仕組み(工事中) Git の仕組み
(工事中) Git の仕組み
Teloo
?
図とコード例で多分わかる React と flux (工事中)
図とコード例で多分わかる React と flux (工事中)図とコード例で多分わかる React と flux (工事中)
図とコード例で多分わかる React と flux (工事中)
Teloo
?
骋颈迟を理解するためにおさえておきたい3つの図(工事中)
骋颈迟を理解するためにおさえておきたい3つの図(工事中)骋颈迟を理解するためにおさえておきたい3つの図(工事中)
骋颈迟を理解するためにおさえておきたい3つの図(工事中)
Teloo
?
図でわかる骋颈迟
図でわかる骋颈迟図でわかる骋颈迟
図でわかる骋颈迟
Teloo
?
JS 6th edition reading circle part 3
JS 6th edition reading circle part 3JS 6th edition reading circle part 3
JS 6th edition reading circle part 3
Teloo
?
JS 6th edition reading circle part 2
JS 6th edition reading circle part 2JS 6th edition reading circle part 2
JS 6th edition reading circle part 2
Teloo
?
(工事中) Git の仕組み
(工事中) Git の仕組み(工事中) Git の仕組み
(工事中) Git の仕組み
Teloo
?

(工事中) Git の仕組み

  • 1. (工事中) Git の仕組み 開発部 齋藤 輝明
  • 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. アジェンダ 1. Git って何?おいしいの? 2. Git はオブジェクトの集合体で管理するよ! 3. ブランチ / タグはただのポインタだよ! 4. コミットは 3 層を意識しよう! 5. merge! cherry-pick! rebase!
  • 4. アジェンダ 1. Git って何?おいしいの? コマンドの使い方とかを 2. Git はオブジェクトの集合体で管理するよ! 教えてほしい? 3. ブランチ / タグはただのポインタだよ! 本を読むか、Google 先生に 4. コミットは 3 層を意識しよう! 訊いてください。 5. merge! cherry-pick! rebase!
  • 5. アジェンダ 1. Git って何?おいしいの? 2. Git はオブジェクトの集合体で管理するよ! 3. ブランチ / タグはただのポインタだよ! 4. コミットは 3 層を意識しよう! 5. merge! cherry-pick! rebase!
  • 6. Git とは? ● オープンソースで開発されているバージョン管 理システム ● Linus Torvalds が Linux カーネルのソース管 理のために開発を始めたツール ● 種類はバージョン管理システムの分散型に含ま れる
  • 7. 集中型 (CVS, Subversion) リポジトリ up update da it mm te commit co co te m da mi t up ファイル?ディレクトリ群 ファイル?ディレクトリ群 ファイル?ディレクトリ群
  • 8. 分散型 (Git) 共用リポジトリ fe tch h p us pu fetch ch sh push fet ローカルリポジトリ ローカルリポジトリ ローカルリポジトリ commit commit commit ファイル?ディレクトリ群 ファイル?ディレクトリ群 ファイル?ディレクトリ群
  • 9. Subversion の作業例 > svn update # リポジトリの修正をローカルのファイル?ディレクトリ群に > 反映 > emacs test1.js # test1.js をエディタで修正 > svn commit # test1.js をリポジトリに反映 > > emacs test2.js # test2.js をエディタで修正 > git commit # test2.js をリポジトリに反映
  • 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. Git の作業例 (簡略化) > git pull # 共用リポジトリから修正差分を取得して、ローカルリ > ポジトリにマージ > emacs test1.js # test1.js をエディタで修正 > git commit -a # 修正されたファイル群をローカルリポジトリにコミット > > emacs test2.js # test2.js をエディタで修正 > git commit -a # 修正されたファイル群をローカルリポジトリににコミッ ト > # ローカルリポジトリの修正内容を共用リポジトリに反 > git push 映
  • 12. 分散型の特長 ● ネットワークから分離されている環境でも、ロー カルのリポジトリ中で仕事が続けられる ● 他人に悪影響を及ぼすことを恐れずに、大規模 な実験的な変更を自由に行ない、その途中経 過を記録しておくことができる ● まとまった変更がいったん完成した時点で、履 歴を見なおして、適切な形に書き直してから公 開することができる
  • 13. アジェンダ 1. Git って何?おいしいの? 2. Git はオブジェクトの集合体で管理するよ! 3. ブランチ / タグはただのポインタだよ! 4. コミットは 3 層を意識しよう! 5. merge! cherry-pick! rebase!
  • 14. Git はオブジェクト ● Git は「オブジェクト」と呼ばれるデータの集合体 ● オブジェクトの内容を基に生成されたハッシュを キーとした Key Value Storeで管理されている ● .git/objects 下に格納されている
  • 15. 主なオブジェクトの種類 ● blob ○ ファイルの中身を表す ● tree ○ ディレクトリの中身を表す ● commit ○ 修正差分を表す
  • 16. オブジェクトの构造 オブジェクト名 ヘッダ情報(型と長さ) SHA-1 ハッシュ オブジェクトの内容 (型により異なる)
  • 17. blob オブジェクトの例 bbc4538... blob 538 #include <studio.h> int main(void) { printf("Hello World!"); }
  • 18. tree オブジェクトの例 b1242d7... tree 224 100644 bbc4538... README 040000 428b354... lib 100755 bfef14a5... start.js
  • 19. tree オブジェクトの例 b1242d7... tree 224 100644 bbc4538... README 040000 428b354... lib 100755 bfef14a5... start.js 型を表す オブジェクト名