• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
SCMBC Git入門セッション発表資料
 

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

on

  • 9,912 views

 

Statistics

Views

Total Views
9,912
Views on SlideShare
5,753
Embed Views
4,159

Actions

Likes
22
Downloads
56
Comments
1

11 Embeds 4,159

http://d.hatena.ne.jp 3803
http://dev.classmethod.jp 239
http://bleis-tift.hatenablog.com 75
http://sns.labs.fujitsu.com 13
http://a0.twimg.com 9
http://webcache.googleusercontent.com 9
http://us-w1.rockmelt.com 5
http://asakusasatellite.heroku.com 3
http://paper.li 1
http://s.deeeki.com 1
http://hatenatunnel.appspot.com 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

CC Attribution-ShareAlike LicenseCC Attribution-ShareAlike License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel

11 of 1 previous next

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
  • 17ページの図、/ から a' へ矢印が伸びてますが、正しくは t からです。Github に正しいバージョンをあげてあるので、そちらをどうぞ。

    https://github.com/kyonmm/SCMBootCamp
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

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

    • 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 1SCMBC Git 資料
    • Commit オブジェクト コミット(リビジョンの記録)  コミットした人、時間、メッセージ  親コミット  ルート Tree … 親コミット  通常ひとつ  マージした場合、複数  初回コミットにはない 親コミットを順にたどることで歴史がわかる SCMBC Git 資料
    • コミットメッセージ 普通にGitを使うとコミットメッセージは必須  空だとエラーになる 一行目に概要、二行目を空白にして、三行目以降に 詳細  色々なコマンド (主にログ系) がこのフォーマット前提  詳細が不要な時は一行目だけ SCMBC Git 資料
    • コミットの様子 /a t b cSCMBC Git 資料
    • git init /a t .git b c SCMBC Git 資料
    • git add . /a t .git b c / a t Tree オブジェクトや Blob オブジェクトが作ら れる b cSCMBC Git 資料
    • git commit /a t .git A Commit オブジェクトが作ら れる b c / a t b cSCMBC 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 Ba b c / / a a’ t b cSCMBC Git 資料
    • git add -A; git commit / 新しいコミットオブ t .git ジェクト A B Ca 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 bba31c 23ca1 master HEAD SCMBC Git 資料
    • git checkout b HEAD bba31c 23ca1 master SCMBC Git 資料
    • edit & git commit … HEAD b 99214 111115ba31c 23ca1 master SCMBC Git 資料
    • git checkout master b 99214 111115ba31c 23ca1 master HEAD SCMBC Git 資料
    • edit; git commit b 99214 111115ba31c 23ca1 12bae master HEAD SCMBC Git 資料
    • git merge b b 99214 111115ba31c 23ca1 12bae ccb32 master HEAD 両方の変更点を問題ない形で持つ SCMBC Git 資料
    • git reset --hard 23ca1 b 99214 111115ba31c 23ca1 12bae ccb32 master HEAD SCMBC Git 資料
    • git merge b HEAD b master 99214 111115ba31c 23ca1 12bae ccb32 ブランチを移動するだけでマージ完了 →fast forward merge SCMBC Git 資料
    • git reset --hard 12bae b 99214 111115ba31c 23ca1 12bae ccb32 master HEAD SCMBC Git 資料
    • ちょっと表記を変更 b 1 2A B C M master HEADSCMBC Git 資料
    • git checkout b HEAD b 1 2 A B C M masterSCMBC Git 資料
    • git rebase master 1 2 A B HEAD C M b master 1’ 2’SCMBC Git 資料
    • 図が見にくいのでマージコミットを消す 1 2A 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 23ca1SCMBC Git 資料
    • 分散リポジトリの例 repository A ba31c 23ca1 924c3 リポジトリはバラバラに成長するが、区別 できる repository B ba31c 23ca1 7128dSCMBC Git 資料
    • git fetch origin repository A ba31c 23ca1 924c3 変更分だけ取得 repository B origin/master 924c3 ba31c 23ca1 7128d masterSCMBC Git 資料
    • git merge origin/master; git push repository A ba31c 23ca1 924c3 23ca1 7128d 変更点を通知 repository B origin/master 924c3 ba31c 23ca1 23ca1 7128d masterSCMBC Git 資料
    • さいごに オブジェクトを理解し、 ブランチの考え方を理解し、 コミットグラフを頭に思い浮かべることができれば 勝てる そうすればresetとかrebaseも理解しやすい よ!みんなでreset/rebaseしまくろ う! SCMBC Git 資料