SlideShare uma empresa Scribd logo
1 de 20
(工事中) 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

Mais conteúdo relacionado

Mais procurados

Cakephp勉強会@tokyo #4
Cakephp勉強会@tokyo #4Cakephp勉強会@tokyo #4
Cakephp勉強会@tokyo #4ichikaway
 
ぼくの考えた最強のpipeline構成
ぼくの考えた最強のpipeline構成ぼくの考えた最強のpipeline構成
ぼくの考えた最強のpipeline構成Naoto Nishizono
 
Git pyfes201207-presen
Git pyfes201207-presenGit pyfes201207-presen
Git pyfes201207-presenKouhei Maeda
 
Redisととあるシステム
RedisととあるシステムRedisととあるシステム
RedisととあるシステムTakehiro Torigaki
 
新生Lagopus2017(仮称)
新生Lagopus2017(仮称)新生Lagopus2017(仮称)
新生Lagopus2017(仮称)Masaru Oki
 
Cocoa勉強会#33-意外に楽に使えるlibcurl
Cocoa勉強会#33-意外に楽に使えるlibcurlCocoa勉強会#33-意外に楽に使えるlibcurl
Cocoa勉強会#33-意外に楽に使えるlibcurlMasayuki Nii
 
Mercurialコマンドの紹介
Mercurialコマンドの紹介Mercurialコマンドの紹介
Mercurialコマンドの紹介Tsutomu Takeuchi
 
とあるWeb企業でのDebianシステムの使い方。
とあるWeb企業でのDebianシステムの使い方。とあるWeb企業でのDebianシステムの使い方。
とあるWeb企業でのDebianシステムの使い方。Kouhei Maeda
 
R以外の研究ツール
R以外の研究ツールR以外の研究ツール
R以外の研究ツール弘毅 露崎
 
RとSQLiteで気軽にデータベース作成
RとSQLiteで気軽にデータベース作成RとSQLiteで気軽にデータベース作成
RとSQLiteで気軽にデータベース作成弘毅 露崎
 
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-08Nobuto 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 PoudriereYuichiro Naito
 

Mais procurados (19)

Cakephp勉強会@tokyo #4
Cakephp勉強会@tokyo #4Cakephp勉強会@tokyo #4
Cakephp勉強会@tokyo #4
 
ぼくの考えた最強のpipeline構成
ぼくの考えた最強のpipeline構成ぼくの考えた最強のpipeline構成
ぼくの考えた最強のpipeline構成
 
チートシート
チートシートチートシート
チートシート
 
Git pyfes201207-presen
Git pyfes201207-presenGit pyfes201207-presen
Git pyfes201207-presen
 
Redisととあるシステム
RedisととあるシステムRedisととあるシステム
Redisととあるシステム
 
Redis速習会@Wantedly
Redis速習会@WantedlyRedis速習会@Wantedly
Redis速習会@Wantedly
 
新生Lagopus2017(仮称)
新生Lagopus2017(仮称)新生Lagopus2017(仮称)
新生Lagopus2017(仮称)
 
Cocoa勉強会#33-意外に楽に使えるlibcurl
Cocoa勉強会#33-意外に楽に使えるlibcurlCocoa勉強会#33-意外に楽に使えるlibcurl
Cocoa勉強会#33-意外に楽に使えるlibcurl
 
Mercurialコマンドの紹介
Mercurialコマンドの紹介Mercurialコマンドの紹介
Mercurialコマンドの紹介
 
STC_manual_ver1.0
STC_manual_ver1.0STC_manual_ver1.0
STC_manual_ver1.0
 
FFFTP
FFFTPFFFTP
FFFTP
 
とあるWeb企業でのDebianシステムの使い方。
とあるWeb企業でのDebianシステムの使い方。とあるWeb企業でのDebianシステムの使い方。
とあるWeb企業でのDebianシステムの使い方。
 
R以外の研究ツール
R以外の研究ツールR以外の研究ツール
R以外の研究ツール
 
RとSQLiteで気軽にデータベース作成
RとSQLiteで気軽にデータベース作成RとSQLiteで気軽にデータベース作成
RとSQLiteで気軽にデータベース作成
 
Git overview (v 0.96)
Git overview (v 0.96)Git overview (v 0.96)
Git overview (v 0.96)
 
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
 
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)
 
20131109 ruby conf2013
20131109 ruby conf201320131109 ruby conf2013
20131109 ruby conf2013
 
Custom Package Building with Poudriere
Custom Package Building with PoudriereCustom Package Building with Poudriere
Custom Package Building with Poudriere
 

Destaque

Web Marketing Evolution : Big Data Scenario
Web Marketing Evolution : Big Data ScenarioWeb Marketing Evolution : Big Data Scenario
Web Marketing Evolution : Big Data ScenarioFabio Castronuovo
 
Post-Independencia: 10 Claves para preparar el Derecho a Decidir en Euskal He...
Post-Independencia: 10 Claves para preparar el Derecho a Decidir en Euskal He...Post-Independencia: 10 Claves para preparar el Derecho a Decidir en Euskal He...
Post-Independencia: 10 Claves para preparar el Derecho a Decidir en Euskal He...Dr Igor Calzada, MBA, FeRSA
 
(工事中) Git の仕組み
(工事中) Git の仕組み(工事中) Git の仕組み
(工事中) Git の仕組みTeloo
 
елена игнатова вистиномер
елена игнатова   вистиномерелена игнатова   вистиномер
елена игнатова вистиномерYouthEduForum
 
Pasos del proyecto 2012
Pasos del proyecto 2012Pasos del proyecto 2012
Pasos del proyecto 2012Stella Maris
 
Realidad del alumno Universidad catolica sede azogues
Realidad del alumno Universidad catolica sede azoguesRealidad del alumno Universidad catolica sede azogues
Realidad del alumno Universidad catolica sede azoguesJosue Cardenas
 
Criterio de evaluacion sociales ii
Criterio de evaluacion sociales iiCriterio de evaluacion sociales ii
Criterio de evaluacion sociales iiarianayarleni
 
7 benefits of blog writing templates
 7 benefits of blog writing templates 7 benefits of blog writing templates
7 benefits of blog writing templatesGerome Soriano
 
Blues & Wine Soul Festival - Summer tour 2013 - IT
Blues & Wine Soul Festival - Summer tour 2013 - ITBlues & Wine Soul Festival - Summer tour 2013 - IT
Blues & Wine Soul Festival - Summer tour 2013 - ITCristian Moncada
 
B4チラシうら1226
B4チラシうら1226B4チラシうら1226
B4チラシうら1226himejisaty
 
materi Perilakutercela
materi Perilakutercela materi Perilakutercela
materi Perilakutercela Elyn_Noriin
 

Destaque (15)

Web Marketing Evolution : Big Data Scenario
Web Marketing Evolution : Big Data ScenarioWeb Marketing Evolution : Big Data Scenario
Web Marketing Evolution : Big Data Scenario
 
Post-Independencia: 10 Claves para preparar el Derecho a Decidir en Euskal He...
Post-Independencia: 10 Claves para preparar el Derecho a Decidir en Euskal He...Post-Independencia: 10 Claves para preparar el Derecho a Decidir en Euskal He...
Post-Independencia: 10 Claves para preparar el Derecho a Decidir en Euskal He...
 
(工事中) Git の仕組み
(工事中) Git の仕組み(工事中) Git の仕組み
(工事中) Git の仕組み
 
елена игнатова вистиномер
елена игнатова   вистиномерелена игнатова   вистиномер
елена игнатова вистиномер
 
Pasos del proyecto 2012
Pasos del proyecto 2012Pasos del proyecto 2012
Pasos del proyecto 2012
 
Realidad del alumno Universidad catolica sede azogues
Realidad del alumno Universidad catolica sede azoguesRealidad del alumno Universidad catolica sede azogues
Realidad del alumno Universidad catolica sede azogues
 
BROCHURE
BROCHUREBROCHURE
BROCHURE
 
Descente dames
Descente damesDescente dames
Descente dames
 
Criterio de evaluacion sociales ii
Criterio de evaluacion sociales iiCriterio de evaluacion sociales ii
Criterio de evaluacion sociales ii
 
Bộ giáo dục và đào tạo trường đh
Bộ giáo dục và đào tạo trường đhBộ giáo dục và đào tạo trường đh
Bộ giáo dục và đào tạo trường đh
 
7 benefits of blog writing templates
 7 benefits of blog writing templates 7 benefits of blog writing templates
7 benefits of blog writing templates
 
Blues & Wine Soul Festival - Summer tour 2013 - IT
Blues & Wine Soul Festival - Summer tour 2013 - ITBlues & Wine Soul Festival - Summer tour 2013 - IT
Blues & Wine Soul Festival - Summer tour 2013 - IT
 
B4チラシうら1226
B4チラシうら1226B4チラシうら1226
B4チラシうら1226
 
materi Perilakutercela
materi Perilakutercela materi Perilakutercela
materi Perilakutercela
 
Apresentação X commanda
Apresentação X commandaApresentação X commanda
Apresentação X commanda
 

Semelhante a (工事中) Git の仕組み

バージョン管理システムチュートリアル
バージョン管理システムチュートリアルバージョン管理システムチュートリアル
バージョン管理システムチュートリアルRyo Igarashi
 
猫にはわからないGit講座
猫にはわからないGit講座猫にはわからないGit講座
猫にはわからないGit講座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 開発ワークショップ #02Kosuke Tanabe
 
GitHubワークショップ
GitHubワークショップGitHubワークショップ
GitHubワークショップHiroaki Murayama
 
Git 初心者講座 by forkwell
Git 初心者講座 by forkwellGit 初心者講座 by forkwell
Git 初心者講座 by forkwellsinsoku 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
 
ソフトウェア工学2023 08 GitHub
ソフトウェア工学2023 08 GitHubソフトウェア工学2023 08 GitHub
ソフトウェア工学2023 08 GitHubToru Tamaki
 
バージョン管理とGit
バージョン管理とGitバージョン管理とGit
バージョン管理とGitsinsoku listy
 

Semelhante a (工事中) Git の仕組み (20)

バージョン管理システムチュートリアル
バージョン管理システムチュートリアルバージョン管理システムチュートリアル
バージョン管理システムチュートリアル
 
Git (実践入門編)
Git (実践入門編)Git (実践入門編)
Git (実践入門編)
 
Git 実践入門
Git 実践入門Git 実践入門
Git 実践入門
 
猫にはわからないGit講座
猫にはわからないGit講座猫にはわからないGit講座
猫にはわからないGit講座
 
Git for beginners
Git for beginnersGit for beginners
Git for beginners
 
git 初めの一歩
git 初めの一歩git 初めの一歩
git 初めの一歩
 
Git -分散バージョン管理システム-
Git -分散バージョン管理システム-Git -分散バージョン管理システム-
Git -分散バージョン管理システム-
 
Version Control System Tutorial バージョン管理システムチュートリアル
Version Control System Tutorial バージョン管理システムチュートリアルVersion Control System Tutorial バージョン管理システムチュートリアル
Version Control System Tutorial バージョン管理システムチュートリアル
 
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
 
Git
GitGit
Git
 
Next-L Enju 開発ワークショップ #02
Next-L Enju 開発ワークショップ #02Next-L Enju 開発ワークショップ #02
Next-L Enju 開発ワークショップ #02
 
GitHubワークショップ
GitHubワークショップGitHubワークショップ
GitHubワークショップ
 
Github入門2014
Github入門2014Github入門2014
Github入門2014
 
Git 初心者講座 by forkwell
Git 初心者講座 by forkwellGit 初心者講座 by forkwell
Git 初心者講座 by forkwell
 
Git/GitHub
Git/GitHubGit/GitHub
Git/GitHub
 
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
 
社会人になってから考えた GitHubを使った共同論文執筆 フロー編
社会人になってから考えた GitHubを使った共同論文執筆 フロー編社会人になってから考えた GitHubを使った共同論文執筆 フロー編
社会人になってから考えた GitHubを使った共同論文執筆 フロー編
 
Git&GitHub入門
Git&GitHub入門Git&GitHub入門
Git&GitHub入門
 
ソフトウェア工学2023 08 GitHub
ソフトウェア工学2023 08 GitHubソフトウェア工学2023 08 GitHub
ソフトウェア工学2023 08 GitHub
 
バージョン管理とGit
バージョン管理とGitバージョン管理とGit
バージョン管理とGit
 

Último

論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 

Último (9)

論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 

(工事中) 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 型を表す オブジェクト名