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

2年以上前 にアップロード

(2011年11月18日)

スポンサーリンク

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

このスライドを共有する

  • このエントリーをはてなブックマークに追加

関連スライド

おすすめスライド

↑