SlideShare una empresa de Scribd logo
1 de 42
SCMBC Git 資料

  第二回 SCMBC Git 班
Git のリポジトリ
    リポジトリ = データを貯めるところ

    Git ではリポジトリがローカルにある
        SVNではローカルにないことが多い
        ローカルのリポジトリに対する操作は高速 (通信不要)
        push, pull などを使って同期を取る (通信がここで発生)


    手元のリポジトリではコンフリクトしない




    SCMBC Git 資料
多人数開発
      SVNでは1リポジトリ複数ツ
       リー




                            Gitでは個人がリポジトリを
SCMBC Git 資料                 持つ
               Figures from Pro Git http://progit.org/book/ja/ch5-1.html
多人数開発
    共有リポジトリに pull, push をする
    共有リポジトリは複数ある場合も
        CIサーバとステージング用と、、、




    SCMBC Git 資料
                   Figures from Pro Git http://progit.org/book/ja/ch5-1.html
Git のオブジェクト

    すべて Immutable
        作成されたら破棄されないかぎり変更されない


    Blob : ファイルの中身
    Tree : ディレクトリ構成
    Commit : コミット内容
    (Tag)




    SCMBC Git 資料
Blob オブジェクト

    ファイルの中身だけを表す

    ファイル名などは Tree オブジェクトが保持

    Tree や Commit をまたいで参照される
        このために Immutable になっている


    差分ではなく、スナップショット



    SCMBC Git 資料
Tree オブジェクト

    ディレクトリ構成を表す
        子ファイル
        子ディレクトリ


    同一のオブジェクトは複数のツリーから参照される
        ディスクの空間効率をよくするため




    SCMBC Git 資料
実ファイルと Git オブジェクト

                                  850fc9..
                                       Tree
     /                            100644 25b351..
                                         a
                       25b351..   40000 219852.. t    219852..
a              t            Blob                   Tree
                       0010011010100          100644 989209..
                             1                       b
                                              100755 1b0938..
      b            c               989209..          c           1b0938..
                                         Blob                 Blob
                                    1110010110110        1001010110010
                                          1                    1


SCMBC Git 資料
Commit オブジェクト

    コミット(リビジョンの記録)
        コミットした人、時間、メッセージ
        親コミット
        ルート Tree …
    親コミット
        通常ひとつ
        マージした場合、複数
        初回コミットにはない
    親コミットを順にたどることで歴史がわかる


    SCMBC Git 資料
コミットメッセージ

    普通にGitを使うとコミットメッセージは必須
        空だとエラーになる


    一行目に概要、二行目を空白にして、三行目以降に
     詳細
        色々なコマンド (主にログ系) がこのフォーマット前提
        詳細が不要な時は一行目だけ




    SCMBC Git 資料
コミットの様子
     /



a              t



      b            c




SCMBC Git 資料
git init
      /



a               t       .git



       b            c




 SCMBC Git 資料
git add .
     /



a              t       .git



      b            c
                                  /


                              a           t
                                                  Tree オブジェクトや
                                                  Blob オブジェクトが作ら
                                                  れる
                                      b       c

SCMBC Git 資料
git commit
     /



a              t       .git
                                  A           Commit オブジェクトが作ら
                                              れる

      b            c
                                  /


                              a           t



                                      b        c

SCMBC Git 資料
edit a; git add a; git commit
     /


                                          新しいコミットオブ
a’
a              t       .git               ジェクト
                                  A            B


      b            c
                                  /                /


                              a                    a’   aを編集してa’にした
                                          t


                                                  t以下はいじってないので
                                      b       c
                                                  そのままのものが使われ
                                                  る
SCMBC Git 資料
a を t 配下に移動 (mv a t/a)
     /



               t       .git
                                  A               B


a     b            c
                                  /               /


                              a                   a’
                                          t



                                      b       c

SCMBC Git 資料
git add -A; git commit
     /


                                                    新しいコミットオブ
               t       .git                         ジェクト
                                  A               B       C


a     b            c
                                  /               /           /


                              a                   a’
                                          t                   t


                                                       Tree は変更された
                                      b       c
                                                       が
SCMBC Git 資料
                                                       Blob はそのまま
オブジェクトのハッシュ値

    すべてのオブジェクトの SHA-1 ハッシュ
    比較はすべてハッシュ値で行う

    世界中で(事実上の)一意性が担保される
        SVNなど連番リビジョン番号との違い
        リポジトリが分散しても安心(後述)


    リモートとの通信でもハッシュ値でオブジェクトに
     ついて判断できるので高速、低負荷


    SCMBC Git 資料
ブランチ

   Commit オブジェクト(ハッシュ値)へのポインタ
       作成、削除が高速

   Commit オブジェクトの親コミットをたどることでブ
    ランチが表現できる

   ブランチの切り替え
       重複しているオブジェクトをハッシュ値で区別




    SCMBC Git 資料
ブランチの使い方
   最初は master
       git branch で作成
       git checkout で移動

   フィーチャブランチ(トピックブランチ)
       機能ごとにブランチをきる
       短命なブランチ

   さまざまなプラクティス
       A successful Git branching model
           英語: http://nvie.com/posts/a-successful-git-branching-model/
           日本語:http://keijinsonyaban.blogspot.com/2010/10/successful-git-branching-model.html



    SCMBC Git 資料
ブランチのイメージ




ba31c           23ca1


                master


                HEAD


                    HEAD は現在のブランチを表す
 SCMBC Git 資料
git branch b


                  b


ba31c           23ca1


                master


                HEAD




 SCMBC Git 資料
git checkout b

                HEAD

                  b


ba31c           23ca1


                master




 SCMBC Git 資料
edit & git commit …
                                 HEAD

                                   b


                         99214   111115

ba31c           23ca1


                master




 SCMBC Git 資料
git checkout master

                                   b


                         99214   111115

ba31c           23ca1


                master

                HEAD




 SCMBC Git 資料
edit; git commit

                                   b


                        99214    111115

ba31c           23ca1

                        12bae


                        master

                        HEAD




 SCMBC Git 資料
git merge b

                                  b


                        99214   111115

ba31c           23ca1

                        12bae     ccb32


                                  master

                                  HEAD


  両方の変更点を問題ない形で持つ
 SCMBC Git 資料
git reset --hard 23ca1

                                   b


                         99214   111115

ba31c           23ca1

                         12bae     ccb32
                master

                HEAD




 SCMBC Git 資料
git merge b
                                             HEAD

                                b            master


                        99214       111115

ba31c           23ca1

                        12bae         ccb32




 ブランチを移動するだけでマージ完了
 →fast forward merge
 SCMBC Git 資料
git reset --hard 12bae

                                   b


                        99214    111115

ba31c           23ca1

                        12bae      ccb32


                        master

                        HEAD




 SCMBC Git 資料
ちょっと表記を変更

                            b


                     1      2

A              B

                     C          M


                   master

                   HEAD




SCMBC Git 資料
git checkout b
                            HEAD

                             b


                     1       2

 A             B

                     C           M


                   master




SCMBC Git 資料
git rebase master



                     1      2

 A             B
                                     HEAD

                     C          M
                                      b

                   master
                                1’    2’




SCMBC Git 資料
図が見にくいのでマージコミットを消す



                     1      2

A              B
                                     HEAD

                     C
                                      b

                   master
                                1’    2’




 fast forward merge可能!
SCMBC Git 資料
実はSVNでもやってた

                    自分

                   未コミッ
                     ト

A              B

                    C      D


                          リポジト
                            リ




 競合が発生してコミットできない・・・
SCMBC Git 資料
SVNでのUpdate時の競合の解決≒rebase


                               自分

                              未コミッ
A              B                ト

                   C    D


                       リポジト
                         リ




 競合を解決・・・ここがrebaseっぽい
SCMBC Git 資料
SVNでのUpdate時の競合の解決≒rebase


                            自分


A              B            E

                   C   D   リポジト
                             リ




 そしてコミット!ただしこの作業はやり直し不
SCMBC Git 資料
分散リポジトリの例
   repository A



     ba31c        23ca1




                          git clone
   repository B



     ba31c        23ca1



SCMBC Git 資料
分散リポジトリの例
   repository A



     ba31c        23ca1   924c3




   リポジトリはバラバラに成長するが、区別
   できる
   repository B



     ba31c        23ca1   7128d



SCMBC Git 資料
git fetch origin
   repository A



     ba31c        23ca1   924c3




       変更分だけ取得
   repository B                   origin/master

                          924c3
     ba31c        23ca1
                          7128d
                                     master

SCMBC Git 資料
git merge origin/master; git push
   repository A



     ba31c        23ca1    924c3   23ca1

                           7128d


                          変更点を通知
   repository B
                                           origin/master
                           924c3
     ba31c        23ca1            23ca1
                           7128d             master


SCMBC Git 資料
さいごに
    オブジェクトを理解し、
    ブランチの考え方を理解し、
    コミットグラフを頭に思い浮かべることができれば
     勝てる

       そうすればresetとかrebaseも理解しやすい
       よ!みんなでreset/rebaseしまくろ
         う!



    SCMBC Git 資料

Más contenido relacionado

Destacado

git gitにされたオレの屍を超えていけ
git gitにされたオレの屍を超えていけgit gitにされたオレの屍を超えていけ
git gitにされたオレの屍を超えていけDaisuke Kasuya
 
ゆかりん時計の話
ゆかりん時計の話ゆかりん時計の話
ゆかりん時計の話MakTak
 
Git 入門
Git 入門Git 入門
Git 入門y-uti
 
140611だいたいわかるGit
140611だいたいわかるGit140611だいたいわかるGit
140611だいたいわかるGitMasashi Tsuru
 
[JavaDo] JAX-RS ハンズオン 第2部
[JavaDo] JAX-RS ハンズオン 第2部[JavaDo] JAX-RS ハンズオン 第2部
[JavaDo] JAX-RS ハンズオン 第2部haruki ueno
 
カラーマネジメント入門
カラーマネジメント入門カラーマネジメント入門
カラーマネジメント入門mdome
 
Git勉強会 2016 Gitで卒論を管理しよう回
Git勉強会 2016 Gitで卒論を管理しよう回Git勉強会 2016 Gitで卒論を管理しよう回
Git勉強会 2016 Gitで卒論を管理しよう回kinme modoki
 
やさしいGitの内部構造 - yapcasia2013
やさしいGitの内部構造 - yapcasia2013やさしいGitの内部構造 - yapcasia2013
やさしいGitの内部構造 - yapcasia2013DQNEO
 
UnityでVRアプリを作ってみよう! (ハンズオン編)
UnityでVRアプリを作ってみよう! (ハンズオン編)UnityでVRアプリを作ってみよう! (ハンズオン編)
UnityでVRアプリを作ってみよう! (ハンズオン編)Masahiro Ide
 
測って図る:データ駆動型サービス工学の実践
測って図る:データ駆動型サービス工学の実践測って図る:データ駆動型サービス工学の実践
測って図る:データ駆動型サービス工学の実践Kurata Takeshi
 
Chainerライブコーディング
ChainerライブコーディングChainerライブコーディング
Chainerライブコーディングm3 329
 
SourceTreeで始めよう! Gitへの乗り換え指南
SourceTreeで始めよう! Gitへの乗り換え指南SourceTreeで始めよう! Gitへの乗り換え指南
SourceTreeで始めよう! Gitへの乗り換え指南Kouji Matsui
 
ノンプログラマでも今日から使える「Git」でバージョン管理
ノンプログラマでも今日から使える「Git」でバージョン管理ノンプログラマでも今日から使える「Git」でバージョン管理
ノンプログラマでも今日から使える「Git」でバージョン管理H2O Space. Co., Ltd.
 
Oftec Lightning Talk 第7回 最近触ったLinuxディストリビューションの紹介
Oftec Lightning Talk 第7回 最近触ったLinuxディストリビューションの紹介Oftec Lightning Talk 第7回 最近触ったLinuxディストリビューションの紹介
Oftec Lightning Talk 第7回 最近触ったLinuxディストリビューションの紹介Yu Nobara
 
コンセプトから理解するGitコマンド
コンセプトから理解するGitコマンドコンセプトから理解するGitコマンド
コンセプトから理解するGitコマンドktateish
 
ポイントをおさえて移行しよう!Git乗り換え超初級
ポイントをおさえて移行しよう!Git乗り換え超初級ポイントをおさえて移行しよう!Git乗り換え超初級
ポイントをおさえて移行しよう!Git乗り換え超初級Kouji Matsui
 
Git flowの活用事例
Git flowの活用事例Git flowの活用事例
Git flowの活用事例Hirohito Kato
 

Destacado (20)

git gitにされたオレの屍を超えていけ
git gitにされたオレの屍を超えていけgit gitにされたオレの屍を超えていけ
git gitにされたオレの屍を超えていけ
 
Wagby on Cloud Foundry
Wagby on Cloud FoundryWagby on Cloud Foundry
Wagby on Cloud Foundry
 
ゆかりん時計の話
ゆかりん時計の話ゆかりん時計の話
ゆかりん時計の話
 
Git 入門
Git 入門Git 入門
Git 入門
 
140611だいたいわかるGit
140611だいたいわかるGit140611だいたいわかるGit
140611だいたいわかるGit
 
[JavaDo] JAX-RS ハンズオン 第2部
[JavaDo] JAX-RS ハンズオン 第2部[JavaDo] JAX-RS ハンズオン 第2部
[JavaDo] JAX-RS ハンズオン 第2部
 
Gitの使い方あれこれ
Gitの使い方あれこれGitの使い方あれこれ
Gitの使い方あれこれ
 
カラーマネジメント入門
カラーマネジメント入門カラーマネジメント入門
カラーマネジメント入門
 
Git勉強会 2016 Gitで卒論を管理しよう回
Git勉強会 2016 Gitで卒論を管理しよう回Git勉強会 2016 Gitで卒論を管理しよう回
Git勉強会 2016 Gitで卒論を管理しよう回
 
Git (実践入門編)
Git (実践入門編)Git (実践入門編)
Git (実践入門編)
 
やさしいGitの内部構造 - yapcasia2013
やさしいGitの内部構造 - yapcasia2013やさしいGitの内部構造 - yapcasia2013
やさしいGitの内部構造 - yapcasia2013
 
UnityでVRアプリを作ってみよう! (ハンズオン編)
UnityでVRアプリを作ってみよう! (ハンズオン編)UnityでVRアプリを作ってみよう! (ハンズオン編)
UnityでVRアプリを作ってみよう! (ハンズオン編)
 
測って図る:データ駆動型サービス工学の実践
測って図る:データ駆動型サービス工学の実践測って図る:データ駆動型サービス工学の実践
測って図る:データ駆動型サービス工学の実践
 
Chainerライブコーディング
ChainerライブコーディングChainerライブコーディング
Chainerライブコーディング
 
SourceTreeで始めよう! Gitへの乗り換え指南
SourceTreeで始めよう! Gitへの乗り換え指南SourceTreeで始めよう! Gitへの乗り換え指南
SourceTreeで始めよう! Gitへの乗り換え指南
 
ノンプログラマでも今日から使える「Git」でバージョン管理
ノンプログラマでも今日から使える「Git」でバージョン管理ノンプログラマでも今日から使える「Git」でバージョン管理
ノンプログラマでも今日から使える「Git」でバージョン管理
 
Oftec Lightning Talk 第7回 最近触ったLinuxディストリビューションの紹介
Oftec Lightning Talk 第7回 最近触ったLinuxディストリビューションの紹介Oftec Lightning Talk 第7回 最近触ったLinuxディストリビューションの紹介
Oftec Lightning Talk 第7回 最近触ったLinuxディストリビューションの紹介
 
コンセプトから理解するGitコマンド
コンセプトから理解するGitコマンドコンセプトから理解するGitコマンド
コンセプトから理解するGitコマンド
 
ポイントをおさえて移行しよう!Git乗り換え超初級
ポイントをおさえて移行しよう!Git乗り換え超初級ポイントをおさえて移行しよう!Git乗り換え超初級
ポイントをおさえて移行しよう!Git乗り換え超初級
 
Git flowの活用事例
Git flowの活用事例Git flowの活用事例
Git flowの活用事例
 

Similar a SCMBC Git入門セッション発表資料

Gitを理解するためにおさえておきたい3つの図(工事中)
Gitを理解するためにおさえておきたい3つの図(工事中)Gitを理解するためにおさえておきたい3つの図(工事中)
Gitを理解するためにおさえておきたい3つの図(工事中)Teloo
 
Gitの便利ワザ
Gitの便利ワザGitの便利ワザ
Gitの便利ワザktateish
 
Gitを使ってみよう
Gitを使ってみようGitを使ってみよう
Gitを使ってみようTamotsu Furuya
 
15分でわかるGit入門
15分でわかるGit入門15分でわかるGit入門
15分でわかるGit入門to_ueda
 
GitHubの機能を活用したGitHub Flowによる開発の進め方
GitHubの機能を活用したGitHub Flowによる開発の進め方GitHubの機能を活用したGitHub Flowによる開発の進め方
GitHubの機能を活用したGitHub Flowによる開発の進め方Takeshi Mikami
 
Git 道場 心:Git総論、心構え
Git 道場 心:Git総論、心構え Git 道場 心:Git総論、心構え
Git 道場 心:Git総論、心構え Nobuhiro Iwamatsu
 

Similar a SCMBC Git入門セッション発表資料 (12)

Git overview (v 0.96)
Git overview (v 0.96)Git overview (v 0.96)
Git overview (v 0.96)
 
Gitを理解するためにおさえておきたい3つの図(工事中)
Gitを理解するためにおさえておきたい3つの図(工事中)Gitを理解するためにおさえておきたい3つの図(工事中)
Gitを理解するためにおさえておきたい3つの図(工事中)
 
Gitの便利ワザ
Gitの便利ワザGitの便利ワザ
Gitの便利ワザ
 
Gitを使ってみよう
Gitを使ってみようGitを使ってみよう
Gitを使ってみよう
 
Git/GitHub
Git/GitHubGit/GitHub
Git/GitHub
 
15分でわかるGit入門
15分でわかるGit入門15分でわかるGit入門
15分でわかるGit入門
 
Git
GitGit
Git
 
GitHubの機能を活用したGitHub Flowによる開発の進め方
GitHubの機能を活用したGitHub Flowによる開発の進め方GitHubの機能を活用したGitHub Flowによる開発の進め方
GitHubの機能を活用したGitHub Flowによる開発の進め方
 
Github第4章
Github第4章Github第4章
Github第4章
 
Git 20100313
Git 20100313Git 20100313
Git 20100313
 
Git 道場 心:Git総論、心構え
Git 道場 心:Git総論、心構え Git 道場 心:Git総論、心構え
Git 道場 心:Git総論、心構え
 
Git勉強会
Git勉強会Git勉強会
Git勉強会
 

Más de bleis tift

PCさえあればいい。
PCさえあればいい。PCさえあればいい。
PCさえあればいい。bleis tift
 
F#の基礎(?)
F#の基礎(?)F#の基礎(?)
F#の基礎(?)bleis tift
 
No more Legacy documents
No more Legacy documentsNo more Legacy documents
No more Legacy documentsbleis tift
 
解説?FSharp.Quotations.Compiler
解説?FSharp.Quotations.Compiler解説?FSharp.Quotations.Compiler
解説?FSharp.Quotations.Compilerbleis tift
 
効果の低いテストの話
効果の低いテストの話効果の低いテストの話
効果の低いテストの話bleis tift
 
テストの自動化を考える前に
テストの自動化を考える前にテストの自動化を考える前に
テストの自動化を考える前にbleis tift
 
札束でExcelを殴る
札束でExcelを殴る札束でExcelを殴る
札束でExcelを殴るbleis tift
 
.NET系開発者から見たJava
.NET系開発者から見たJava.NET系開発者から見たJava
.NET系開発者から見たJavableis tift
 
SI屋のためのF# ~DSL編~
SI屋のためのF# ~DSL編~SI屋のためのF# ~DSL編~
SI屋のためのF# ~DSL編~bleis tift
 
F#事例発表
F#事例発表F#事例発表
F#事例発表bleis tift
 
yield and return (poor English ver)
yield and return (poor English ver)yield and return (poor English ver)
yield and return (poor English ver)bleis tift
 
yieldとreturnの話
yieldとreturnの話yieldとreturnの話
yieldとreturnの話bleis tift
 
F#の基礎(嘘)
F#の基礎(嘘)F#の基礎(嘘)
F#の基礎(嘘)bleis tift
 
現実(えくせる)と戦う話
現実(えくせる)と戦う話現実(えくせる)と戦う話
現実(えくせる)と戦う話bleis tift
 
ラムダでウィザード 滅せよ手続き、とチャーチは言った (※言ってません)
ラムダでウィザード 滅せよ手続き、とチャーチは言った (※言ってません)ラムダでウィザード 滅せよ手続き、とチャーチは言った (※言ってません)
ラムダでウィザード 滅せよ手続き、とチャーチは言った (※言ってません)bleis tift
 
async/await不要論
async/await不要論async/await不要論
async/await不要論bleis tift
 
F#によるFunctional Programming入門
F#によるFunctional Programming入門F#によるFunctional Programming入門
F#によるFunctional Programming入門bleis tift
 
VBAを書きたくない話(Excel-DNAの紹介)
VBAを書きたくない話(Excel-DNAの紹介)VBAを書きたくない話(Excel-DNAの紹介)
VBAを書きたくない話(Excel-DNAの紹介)bleis tift
 
Better C#の脱却を目指して
Better C#の脱却を目指してBetter C#の脱却を目指して
Better C#の脱却を目指してbleis tift
 
モナドハンズオン前座
モナドハンズオン前座モナドハンズオン前座
モナドハンズオン前座bleis tift
 

Más de bleis tift (20)

PCさえあればいい。
PCさえあればいい。PCさえあればいい。
PCさえあればいい。
 
F#の基礎(?)
F#の基礎(?)F#の基礎(?)
F#の基礎(?)
 
No more Legacy documents
No more Legacy documentsNo more Legacy documents
No more Legacy documents
 
解説?FSharp.Quotations.Compiler
解説?FSharp.Quotations.Compiler解説?FSharp.Quotations.Compiler
解説?FSharp.Quotations.Compiler
 
効果の低いテストの話
効果の低いテストの話効果の低いテストの話
効果の低いテストの話
 
テストの自動化を考える前に
テストの自動化を考える前にテストの自動化を考える前に
テストの自動化を考える前に
 
札束でExcelを殴る
札束でExcelを殴る札束でExcelを殴る
札束でExcelを殴る
 
.NET系開発者から見たJava
.NET系開発者から見たJava.NET系開発者から見たJava
.NET系開発者から見たJava
 
SI屋のためのF# ~DSL編~
SI屋のためのF# ~DSL編~SI屋のためのF# ~DSL編~
SI屋のためのF# ~DSL編~
 
F#事例発表
F#事例発表F#事例発表
F#事例発表
 
yield and return (poor English ver)
yield and return (poor English ver)yield and return (poor English ver)
yield and return (poor English ver)
 
yieldとreturnの話
yieldとreturnの話yieldとreturnの話
yieldとreturnの話
 
F#の基礎(嘘)
F#の基礎(嘘)F#の基礎(嘘)
F#の基礎(嘘)
 
現実(えくせる)と戦う話
現実(えくせる)と戦う話現実(えくせる)と戦う話
現実(えくせる)と戦う話
 
ラムダでウィザード 滅せよ手続き、とチャーチは言った (※言ってません)
ラムダでウィザード 滅せよ手続き、とチャーチは言った (※言ってません)ラムダでウィザード 滅せよ手続き、とチャーチは言った (※言ってません)
ラムダでウィザード 滅せよ手続き、とチャーチは言った (※言ってません)
 
async/await不要論
async/await不要論async/await不要論
async/await不要論
 
F#によるFunctional Programming入門
F#によるFunctional Programming入門F#によるFunctional Programming入門
F#によるFunctional Programming入門
 
VBAを書きたくない話(Excel-DNAの紹介)
VBAを書きたくない話(Excel-DNAの紹介)VBAを書きたくない話(Excel-DNAの紹介)
VBAを書きたくない話(Excel-DNAの紹介)
 
Better C#の脱却を目指して
Better C#の脱却を目指してBetter C#の脱却を目指して
Better C#の脱却を目指して
 
モナドハンズオン前座
モナドハンズオン前座モナドハンズオン前座
モナドハンズオン前座
 

Último

スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
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
 
論文紹介: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
 
論文紹介: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
 
論文紹介: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
 
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
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 

Último (9)

スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
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
 
論文紹介: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...
 
論文紹介: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
 
論文紹介: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
 
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」の紹介
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 

SCMBC Git入門セッション発表資料

  • 1. SCMBC Git 資料 第二回 SCMBC Git 班
  • 2. Git のリポジトリ  リポジトリ = データを貯めるところ  Git ではリポジトリがローカルにある  SVNではローカルにないことが多い  ローカルのリポジトリに対する操作は高速 (通信不要)  push, pull などを使って同期を取る (通信がここで発生)  手元のリポジトリではコンフリクトしない SCMBC Git 資料
  • 3. 多人数開発  SVNでは1リポジトリ複数ツ リー  Gitでは個人がリポジトリを SCMBC Git 資料 持つ Figures from Pro Git http://progit.org/book/ja/ch5-1.html
  • 4. 多人数開発  共有リポジトリに pull, push をする  共有リポジトリは複数ある場合も  CIサーバとステージング用と、、、 SCMBC Git 資料 Figures from Pro Git http://progit.org/book/ja/ch5-1.html
  • 5. Git のオブジェクト  すべて Immutable  作成されたら破棄されないかぎり変更されない  Blob : ファイルの中身  Tree : ディレクトリ構成  Commit : コミット内容  (Tag) SCMBC Git 資料
  • 6. Blob オブジェクト  ファイルの中身だけを表す  ファイル名などは Tree オブジェクトが保持  Tree や Commit をまたいで参照される  このために Immutable になっている  差分ではなく、スナップショット SCMBC Git 資料
  • 7. Tree オブジェクト  ディレクトリ構成を表す  子ファイル  子ディレクトリ  同一のオブジェクトは複数のツリーから参照される  ディスクの空間効率をよくするため SCMBC Git 資料
  • 8. 実ファイルと Git オブジェクト 850fc9.. Tree / 100644 25b351.. a 25b351.. 40000 219852.. t 219852.. a t Blob Tree 0010011010100 100644 989209.. 1 b 100755 1b0938.. b c 989209.. c 1b0938.. Blob Blob 1110010110110 1001010110010 1 1 SCMBC Git 資料
  • 9. Commit オブジェクト  コミット(リビジョンの記録)  コミットした人、時間、メッセージ  親コミット  ルート Tree …  親コミット  通常ひとつ  マージした場合、複数  初回コミットにはない  親コミットを順にたどることで歴史がわかる SCMBC Git 資料
  • 10. コミットメッセージ  普通にGitを使うとコミットメッセージは必須  空だとエラーになる  一行目に概要、二行目を空白にして、三行目以降に 詳細  色々なコマンド (主にログ系) がこのフォーマット前提  詳細が不要な時は一行目だけ SCMBC Git 資料
  • 11. コミットの様子 / a t b c SCMBC Git 資料
  • 12. git init / a t .git b c SCMBC Git 資料
  • 13. git add . / a t .git b c / a t Tree オブジェクトや Blob オブジェクトが作ら れる b c SCMBC Git 資料
  • 14. git commit / a t .git A Commit オブジェクトが作ら れる b c / a t b c SCMBC Git 資料
  • 15. edit a; git add a; git commit / 新しいコミットオブ a’ a t .git ジェクト A B b c / / a a’ aを編集してa’にした t t以下はいじってないので b c そのままのものが使われ る SCMBC Git 資料
  • 16. a を t 配下に移動 (mv a t/a) / t .git A B a b c / / a a’ t b c SCMBC Git 資料
  • 17. git add -A; git commit / 新しいコミットオブ t .git ジェクト A B C a b c / / / a a’ t t Tree は変更された b c が SCMBC Git 資料 Blob はそのまま
  • 18. オブジェクトのハッシュ値  すべてのオブジェクトの SHA-1 ハッシュ  比較はすべてハッシュ値で行う  世界中で(事実上の)一意性が担保される  SVNなど連番リビジョン番号との違い  リポジトリが分散しても安心(後述)  リモートとの通信でもハッシュ値でオブジェクトに ついて判断できるので高速、低負荷 SCMBC Git 資料
  • 19. ブランチ  Commit オブジェクト(ハッシュ値)へのポインタ  作成、削除が高速  Commit オブジェクトの親コミットをたどることでブ ランチが表現できる  ブランチの切り替え  重複しているオブジェクトをハッシュ値で区別 SCMBC Git 資料
  • 20. ブランチの使い方  最初は master  git branch で作成  git checkout で移動  フィーチャブランチ(トピックブランチ)  機能ごとにブランチをきる  短命なブランチ  さまざまなプラクティス  A successful Git branching model  英語: http://nvie.com/posts/a-successful-git-branching-model/  日本語:http://keijinsonyaban.blogspot.com/2010/10/successful-git-branching-model.html SCMBC Git 資料
  • 21. ブランチのイメージ ba31c 23ca1 master HEAD HEAD は現在のブランチを表す SCMBC Git 資料
  • 22. git branch b b ba31c 23ca1 master HEAD SCMBC Git 資料
  • 23. git checkout b HEAD b ba31c 23ca1 master SCMBC Git 資料
  • 24. edit & git commit … HEAD b 99214 111115 ba31c 23ca1 master SCMBC Git 資料
  • 25. git checkout master b 99214 111115 ba31c 23ca1 master HEAD SCMBC Git 資料
  • 26. edit; git commit b 99214 111115 ba31c 23ca1 12bae master HEAD SCMBC Git 資料
  • 27. git merge b b 99214 111115 ba31c 23ca1 12bae ccb32 master HEAD 両方の変更点を問題ない形で持つ SCMBC Git 資料
  • 28. git reset --hard 23ca1 b 99214 111115 ba31c 23ca1 12bae ccb32 master HEAD SCMBC Git 資料
  • 29. git merge b HEAD b master 99214 111115 ba31c 23ca1 12bae ccb32 ブランチを移動するだけでマージ完了 →fast forward merge SCMBC Git 資料
  • 30. git reset --hard 12bae b 99214 111115 ba31c 23ca1 12bae ccb32 master HEAD SCMBC Git 資料
  • 31. ちょっと表記を変更 b 1 2 A B C M master HEAD SCMBC Git 資料
  • 32. git checkout b HEAD b 1 2 A B C M master SCMBC Git 資料
  • 33. git rebase master 1 2 A B HEAD C M b master 1’ 2’ SCMBC Git 資料
  • 34. 図が見にくいのでマージコミットを消す 1 2 A B HEAD C b master 1’ 2’ fast forward merge可能! SCMBC Git 資料
  • 35. 実はSVNでもやってた 自分 未コミッ ト A B C D リポジト リ 競合が発生してコミットできない・・・ SCMBC Git 資料
  • 36. SVNでのUpdate時の競合の解決≒rebase 自分 未コミッ A B ト C D リポジト リ 競合を解決・・・ここがrebaseっぽい SCMBC Git 資料
  • 37. SVNでのUpdate時の競合の解決≒rebase 自分 A B E C D リポジト リ そしてコミット!ただしこの作業はやり直し不 SCMBC Git 資料
  • 38. 分散リポジトリの例 repository A ba31c 23ca1 git clone repository B ba31c 23ca1 SCMBC Git 資料
  • 39. 分散リポジトリの例 repository A ba31c 23ca1 924c3 リポジトリはバラバラに成長するが、区別 できる repository B ba31c 23ca1 7128d SCMBC Git 資料
  • 40. git fetch origin repository A ba31c 23ca1 924c3 変更分だけ取得 repository B origin/master 924c3 ba31c 23ca1 7128d master SCMBC Git 資料
  • 41. git merge origin/master; git push repository A ba31c 23ca1 924c3 23ca1 7128d 変更点を通知 repository B origin/master 924c3 ba31c 23ca1 23ca1 7128d master SCMBC Git 資料
  • 42. さいごに  オブジェクトを理解し、  ブランチの考え方を理解し、  コミットグラフを頭に思い浮かべることができれば 勝てる そうすればresetとかrebaseも理解しやすい よ!みんなでreset/rebaseしまくろ う! SCMBC Git 資料