Gitのすすめ

2,319 views
2,263 views

Published on

0 Comments
5 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,319
On SlideShare
0
From Embeds
0
Number of Embeds
1,259
Actions
Shares
0
Downloads
8
Comments
0
Likes
5
Embeds 0
No embeds

No notes for slide

Gitのすすめ

  1. 1. gitのすすめ デンソーアイティーラボラトリ 吉田悠一
  2. 2. プレゼンで出てくる話はすべてフィクションです。 実在の人物や団体などとはたぶん関係ありません。
  3. 3. subversion?           ____        / \  /\  キリッ .     / (ー)  (ー)\     /   ⌒(__人__)⌒ \     |      |r┬-|    |   さて,今日もsubversionからチェックアウトして      \     `ー'´   /   コーディングだお!!     ノ            \   /´               ヽ
  4. 4. subversion?             ___        /      \       /ノ  \   u. \ !?     / (●)  (●)    \      |   (__人__)    u.   | クスクス>      \ u.` ⌒´      /     ノ           \   /´               ヽ
  5. 5. subversion?          ____ <クスクス   /       \!??       /  u   ノ  \     /      u (●)  \     |         (__人__)|      \    u   .` ⌒/     ノ           \   /´               ヽ
  6. 6. git・・・・? svn?? svn 自重
  7. 7. って言われても        ____      /      \    / ─    ─ \   /   (○)  (○)   \ SVNじゃだめなのかお…   |      (__人__)    |     \     ` ⌒´     /
  8. 8.    / ̄ ̄\  /   _ノ  \  |    ( ●)(●) . |     (__人__) いまだにsvnか・・・・・   |     ` ⌒´ノ 日付でファイルが増えていくよりマシだが・・・ .  |         }   .  ヽ        }  エンジニアならgitを使うだろJK    ヽ     ノ        \    /    く  \        \    |     \   \         \     |    |ヽ、二⌒)、          \
  9. 9. そんなこんなで        ____      /⌒  ⌒\    /( ●)  (●)\   /::::::⌒(__人__)⌒:::::\  やらない夫!   |     |r┬-|     |  gitについてやる夫に教えろお!   \      `ー'´     /
  10. 10.    / ̄ ̄\  /   _ノ  \  |    ( ●)(●) . |     (__人__) まぁいいだろう・・・・   |     ` ⌒´ノ  .  |         }   .  ヽ        }  (このプレゼン作るのに2時間かかったんだが)    ヽ     ノ        \    /    く  \        \    |     \   \         \     |    |ヽ、二⌒)、          \
  11. 11. git • 分散型ソースコード管理ツール • SVN, CVSとは違うよ • リーナスさんがLinuxカーネルの開発を進めるた めに開発
  12. 12. git理解への早道 • まずコンセプトを理解する • 仕様,コマンドから始めると死ねる
  13. 13. そんなこんなで       / ̄ ̄\     /ノ(  ゝ 、_,ノヽ        r'´ ゙ヽ      /`ヽ          ____     | ⌒(( ●)(●)        ヽ   ヽ从从/   /        \   /\ .    |     (__人__) /⌒l     \  \/  /て       (●)liil(●) ノ( \      |     ` ⌒´ノ |`'''|    ∑ ヽ/  /  そ     / (__人__)  ⌒   \     / ⌒ヽ     }  |  |      ,)/  / \ く     |   |!!il|!|!l|         |  コンセプトとかいいからさっさと    /  へ  \   }__/ /      /   /\  \      \i⌒ヽェェ|      /  使い方を教えるお!!!  / / |      ノ   ノ    /   / YYY\   \     \ \  /⌒,/´ ( _ ノ    |      \´    /   /       \   \     / \ \/  /l        |       \_,/   /         \   \_/    \__ノ |\        .|            /            \             |) )        ヽ          /               \           ,r' /          \      , '´                   `' ,        /ー'′           \     (                     )     /             \    \                  /    / 使い方からいくとsvnとの乖離とコマンド大杉のせいで挫折するんだよ!
  14. 14. コンセプト・・・ですか・・・         ____        /      \        /  _ノ  ヽ、_  \      そんなこと言われても     /  (●)  (●)   \    どうすりゃいいのさ     |     (__人__)    |    コンセプトとかわからないお     \     ` ⌒´     /    /´           `\   /  /          l  l __l  l_.[] _____/_/__   \, ´-'ヽ     ヾ_ノ      |      |      |__   コロ・・・・     _____\    コロ・・・・    ()__)」
  15. 15.    / ̄ ̄\  /   _ノ  \  |    ( ●)(●) . |     (__人__)     ゆっくりはじめるぞ   |     ` ⌒´ノ  .  |         }   .  ヽ        }      ヽ     ノ        \    /    く  \        \    |     \   \         \     |    |ヽ、二⌒)、          \
  16. 16. gitのコンセプト
  17. 17. リポジトリ • すべてのリポジトリは並列 • すべてのリポジトリは今までの履歴を持つ
  18. 18. commitを理解する
  19. 19. 空のリポジトリ
  20. 20. ファイルを追加したり 編集・・・
  21. 21. git add, git commitで コミット
  22. 22. 新しいコミットができる hoge.cを追加
  23. 23. コミットに含まれるもの hoge.cを追加 revision(SHAハッシュ値) コミットした人 コミットを作った人 ファイル構造 一つ前のrevision(ポインタみたいな)
  24. 24. コミットに含まれるもの hoge.cを追加 revision(SHAハッシュ値) コミットした人 コミットを作った人 ファイル構造 一つ前のrevision(ポインタみたいな) リポジトリに含まれる すべてのデータは このコミットなのです
  25. 25. コミットに含まれるもの hoge.cを追加 revision(SHAハッシュ値) コミットした人 コミットを作った人 ファイル構造 一つ前のrevision(ポインタみたいな) svnのように番号で 管理されないこと に気をつけて
  26. 26. さらに重ねると hoge.cを追加 hoge.cを編集 hoge.cを編集 こういうグラフをコミットグラフといいます backポインタが常にあるので すべてのコミットを るとファイル構造を常に再現できます
  27. 27. 実際にやってみよう Mac-mini:Desktop sonson$ mkdir test Mac-mini:Desktop sonson$ cd test
  28. 28. 実際にやってみよう Mac-mini:Desktop sonson$ mkdir test Mac-mini:Desktop sonson$ cd test Mac-mini:test sonson$ git init Initialized empty Git repository in /Users/sonson/Desktop/test/.git/ リポジトリ作成
  29. 29. 実際にやってみよう Mac-mini:Desktop sonson$ mkdir test Mac-mini:Desktop sonson$ cd test Mac-mini:test sonson$ git init Initialized empty Git repository in /Users/sonson/Desktop/test/.git/ Mac-mini:test sonson$ ls -al total 0 drwxr-xr-x 3 sonson staff 102 3 13 09:53 . drwx------+ 22 sonson staff 748 3 13 09:53 .. drwxr-xr-x 10 sonson staff 340 3 13 09:53 .git この不可視ファイルの中身がリポジトリのデータ
  30. 30. 実際にやってみよう Mac-mini:Desktop sonson$ mkdir test Mac-mini:Desktop sonson$ cd test Mac-mini:test sonson$ git init Initialized empty Git repository in /Users/sonson/Desktop/test/.git/ Mac-mini:test sonson$ ls -al total 0 drwxr-xr-x 3 sonson staff 102 3 13 09:53 . drwx------+ 22 sonson staff 748 3 13 09:53 .. drwxr-xr-x 10 sonson staff 340 3 13 09:53 .git Mac-mini:test sonson$ touch main.c
  31. 31. 実際にやってみよう Mac-mini:Desktop sonson$ mkdir test Mac-mini:Desktop sonson$ cd test Mac-mini:test sonson$ git init Initialized empty Git repository in /Users/sonson/Desktop/test/.git/ Mac-mini:test sonson$ ls -al total 0 drwxr-xr-x 3 sonson staff 102 3 13 09:53 . drwx------+ 22 sonson staff 748 3 13 09:53 .. drwxr-xr-x 10 sonson staff 340 3 13 09:53 .git Mac-mini:test sonson$ touch main.c Mac-mini:test sonson$ git add main.c gitのファイルツリーの中に追加する
  32. 32. 実際にやってみよう Mac-mini:Desktop sonson$ mkdir test Mac-mini:Desktop sonson$ cd test Mac-mini:test sonson$ git init Initialized empty Git repository in /Users/sonson/Desktop/test/.git/ Mac-mini:test sonson$ ls -al total 0 drwxr-xr-x 3 sonson staff 102 3 13 09:53 . drwx------+ 22 sonson staff 748 3 13 09:53 .. drwxr-xr-x 10 sonson staff 340 3 13 09:53 .git Mac-mini:test sonson$ touch main.c Mac-mini:test sonson$ git add main.c Mac-mini:test sonson$ git commit -m "First commit, added main.c" [master (root-commit) d3f62cb] First commit, added main.c 0 files changed create mode 100644 main.c 新しいコミットが作成された
  33. 33. git • hashの一意性 • 差分のツリー構造 • 常に後ろに れる
  34. 34. わかった?      ____    /      \ ( ;;;;(   /  _ノ  ヽ__\) ;;;;) /    (─)  (─ /;;/ |       (__人__) l;;,´ コミットの管理がかわっただけだお? /      ∩ ノ)━・'/  (  \ / _ノ´.|  |  結局svnと同じじゃないかお・・・・? .\  "  /__|  |   \ /___ /
  35. 35.    / ̄ ̄\  /   _ノ  \  |    ( ●)(●) . |     (__人__)  ツリー構造で管理していて,   |     ` ⌒´ノ  ファイルの部分ごとの差分もちゃんと取れる .  |         }   良さがあるんだが・・・・. .  ヽ        }   まぁ,ここはそのままでいいだろう    ヽ     ノ        \    /    く  \        \    |     \   \         \     |    |ヽ、二⌒)、          \
  36. 36. clone/push/pullを理解する
  37. 37. どこかにリポジトリがある hoge.cを追加 hoge.cを編集 hoge.cを編集
  38. 38. コピーする(くろーん) hoge.cを追加 hoge.cを編集 hoge.cを編集 clone hoge.cを追加 hoge.cを編集 hoge.cを編集
  39. 39. コードを書く hoge.cを追加 hoge.cを編集 hoge.cを編集 hoge.cを追加 hoge.cを編集 hoge.cを編集 bar.cを追加 hoge.cを追加 hoge.cを編集 hoge.cを編集
  40. 40. コミットする hoge.cを追加 hoge.cを編集 hoge.cを編集hoge.cを追加 hoge.cを編集 hoge.cを編集 hoge.cを追加 hoge.cを編集 hoge.cを編集 コミット
  41. 41. pushする push hoge.cを追加 hoge.cを編集 hoge.cを編集hoge.cを追加 hoge.cを編集 hoge.cを編集 hoge.cを追加 hoge.cを編集 hoge.cを編集 コミット
  42. 42. ウマー hoge.cを追加 hoge.cを編集 hoge.cを編集 bar.cを追加 push hoge.cを追加 hoge.cを編集 hoge.cを編集 bar.cを追加
  43. 43. pullは? hoge.cを追加 hoge.cを編集 hoge.cを編集 bar.cを追加 bar.cを編集 hoge.cを追加 hoge.cを編集 hoge.cを編集 bar.cを追加 あ,なんか他のリポジトリが 更新されてる!!
  44. 44. pullは? hoge.cを追加 hoge.cを編集 hoge.cを編集 bar.cを追加 pull hoge.cを追加 hoge.cを編集 hoge.cを編集 bar.cを追加 bar.cを編集
  45. 45. ひっぱってくる 更新された! hoge.cを追加 hoge.cを編集 hoge.cを編集 bar.cを追加 bar.cを編集 hoge.cを追加 hoge.cを編集 hoge.cを編集 bar.cを追加 bar.cを編集
  46. 46. わかった?      ____    /      \ ( ;;;;(   /  _ノ  ヽ__\) ;;;;) /    (─)  (─ /;;/ |       (__人__) l;;,´ コミットと何が違うのかお? /      ∩ ノ)━・'/  (  \ / _ノ´.|  |  pullとpushの呼び方が変わっただけかお・・・・? .\  "  /__|  |   \ /___ /
  47. 47.    / ̄ ̄\  /   _ノ  \  |    ( ●)(●) . |     (__人__) 確かにな・・・・・   |     ` ⌒´ノ 実際の開発の風景を思い浮かべると .  |         }  リポジトリがpush/pullで対等であることの .  ヽ        }  よさがわかると思うぞ    ヽ     ノ        \    /    く  \        \    |     \   \         \     |    |ヽ、二⌒)、          \
  48. 48. 対等性 - 公開リポジトリの場合 S川くん Y田さん
  49. 49. 対等性 - 社内リポジトリの場合 S川くん Y田さんのコードに バグがある!! どーしよー Y田さん
  50. 50. 人間関係 S川くん 間違ってコミットしたら怒られる の怖いけど 直したい・・・・ Y田さん
  51. 51. やっちゃったのか S川くん 実際,前にY田さんのリポジト リめちゃめちゃにしちゃって Y田さんのリポジトリにPushする権限がない し・・・・・ Y田さん
  52. 52. そんなときは S川くん clone どっかのリポジトリY田さん
  53. 53. 対等性 S川くん commit Y田さん
  54. 54. 対等性 S川くん バグ直しましたよ!! こんなもんで,どうですか? Y田さん
  55. 55. 対等性 S川くん あ,いいじゃん Y田さん
  56. 56. 対等性 S川くん pull Y田さん pullする
  57. 57. 対等性 S川くん やったーバグ治った! 俺のコードがちゃんと役立った! Y田さん
  58. 58. clone/push/pull • clone/push/pullの考えみたいなもの? • 親とか子とか関係ないので,clone元からpull して更新することもできます • push/pullというのは力関係がないことを意味 するわけです
  59. 59. わかった?      ____    /      \ ( ;;;;(   /  _ノ  ヽ__\) ;;;;) /    (─)  (─ /;;/ |       (__人__) l;;,´ 分散ってのはわかったお・・・・・・・・ /      ∩ ノ)━・'/ 色々な人とやるには便利っぽいお・・・・・・ (  \ / _ノ´.|  |  ウチの開発環境に関係ないお・・・・・・? .\  "  /__|  |   \ /___ /
  60. 60.    / ̄ ̄\  /   _ノ  \  |    ( ●)(●) . |     (__人__) pull requestと呼ばれるgithubの仕組みを思い浮かべるといい.   |     ` ⌒´ノ  .  |         } マージする場所をbranchを作った人が指定するような感じだ .  ヽ        }  職人的にマージする必要性がなくなるので捗る    ヽ     ノ        \     /    く  \        \    |     \   \         \     |    |ヽ、二⌒)、          \
  61. 61. branchを理解する
  62. 62. branch master
  63. 63. branchを切る master debug-feat1
  64. 64. branchを切り替える master debug-feat1
  65. 65. branchを切り替える master debug-feat1 つまりbranchとはポインタのようなものです branchの有無とは無関係にコミットは存在します
  66. 66. コミットする master debug-feat1
  67. 67. さらにコミットする master debug-feat1
  68. 68. さらにコミットする master バグも取れたし,テストも終わ ったわー debug-feat1
  69. 69. master側も作業 master debug-feat1
  70. 70. branchを切り替えて・・・ master debug-feat1
  71. 71. master側コミットされたようです master debug-feat1
  72. 72. マージ開始 バグFixして欲しい debug-feat1 master
  73. 73. gitがチェック debug-feat1 master git チェック!
  74. 74. gitがチェック debug-feat1 master git コンフリクト とかなさげ,Go
  75. 75. マーーーーーーーーージ!! master debug-feat1
  76. 76. よし,よし バグ取れたわ master debug-feat1
  77. 77. あれ? あのー,俺は? master debug-feat1
  78. 78. ・・・・ あ,用済みだわ master debug-feat1
  79. 79. branch削除 master あああああああ!
  80. 80. branchの考え方 branchとはこんなイメージです svnと違ってデータがすべてコピーされません あくまでポインタであることをお忘れなく 実体はコミットグラフとして常に存在しています master
  81. 81. 実際にやってみよう Mac-mini:test sonson$ git branch * master 現在のbranchを調べる master
  82. 82. 実際にやってみよう Mac-mini:test sonson$ git branch * master Mac-mini:test sonson$ git branch develop 新しくbranchを作成 develop master
  83. 83. 実際にやってみよう Mac-mini:test sonson$ git branch * master Mac-mini:test sonson$ git branch develop Mac-mini:test sonson$ git checkout develop Switched to branch 'develop' 新しく作ったbranchに切り替える develop master
  84. 84. 実際にやってみよう Mac-mini:test sonson$ git branch * master Mac-mini:test sonson$ git branch develop Mac-mini:test sonson$ git checkout develop Switched to branch 'develop' Mac-mini:test sonson$ git branch * develop master branchを調べるとちゃんとふたつある develop master
  85. 85. 実際にやってみよう Mac-mini:test sonson$ git branch * master Mac-mini:test sonson$ git branch develop Mac-mini:test sonson$ git checkout develop Switched to branch 'develop' Mac-mini:test sonson$ git branch * develop master Mac-mini:test sonson$ touch feature1.c Mac-mini:test sonson$ git add feature1.c Mac-mini:test sonson$ git commit -m "Added new feature." [develop 5b5cc9c] Added new feature. 0 files changed create mode 100644 feature1.c branch “develop”でファイルを追加する develop master
  86. 86. 実際にやってみよう Mac-mini:test sonson$ git branch * master Mac-mini:test sonson$ git branch develop Mac-mini:test sonson$ git checkout develop Switched to branch 'develop' Mac-mini:test sonson$ git branch * develop master Mac-mini:test sonson$ touch feature1.c Mac-mini:test sonson$ git add feature1.c Mac-mini:test sonson$ git commit -m "Added new feature." [develop 5b5cc9c] Added new feature. 0 files changed create mode 100644 feature1.c Mac-mini:test sonson$ ls feature1.c main.c ちゃんとファイルはふたつあるよね develop master
  87. 87. 実際にやってみよう Mac-mini:test sonson$ git branch * master Mac-mini:test sonson$ git branch develop Mac-mini:test sonson$ git checkout develop Switched to branch 'develop' Mac-mini:test sonson$ git branch * develop master Mac-mini:test sonson$ touch feature1.c Mac-mini:test sonson$ git add feature1.c Mac-mini:test sonson$ git commit -m "Added new feature." [develop 5b5cc9c] Added new feature. 0 files changed create mode 100644 feature1.c Mac-mini:test sonson$ ls feature1.c main.c Mac-mini:test sonson$ git checkout master Switched to branch 'master' ここでbranch “master”に戻すとどうなる? develop master
  88. 88. 実際にやってみよう Mac-mini:test sonson$ git branch * master Mac-mini:test sonson$ git branch develop Mac-mini:test sonson$ git checkout develop Switched to branch 'develop' Mac-mini:test sonson$ git branch * develop master Mac-mini:test sonson$ touch feature1.c Mac-mini:test sonson$ git add feature1.c Mac-mini:test sonson$ git commit -m "Added new feature." [develop 5b5cc9c] Added new feature. 0 files changed create mode 100644 feature1.c Mac-mini:test sonson$ ls feature1.c main.c Mac-mini:test sonson$ git checkout master Switched to branch 'master' Mac-mini:test sonson$ ls main.c あ,ファイルが消えてる!!!!!!!!! develop master
  89. 89. 実際にやってみよう Mac-mini:test sonson$ git branch * master Mac-mini:test sonson$ git branch develop Mac-mini:test sonson$ git checkout develop Switched to branch 'develop' Mac-mini:test sonson$ git branch * develop master Mac-mini:test sonson$ touch feature1.c Mac-mini:test sonson$ git add feature1.c Mac-mini:test sonson$ git commit -m "Added new feature." [develop 5b5cc9c] Added new feature. 0 files changed create mode 100644 feature1.c Mac-mini:test sonson$ ls feature1.c main.c Mac-mini:test sonson$ git checkout master Switched to branch 'master' Mac-mini:test sonson$ ls main.c あ,ファイルが消えてる!!!!!!!!! gitのリポジトリを作ったディレクトリはgitに管理されるイメージ. すべてのデータは.git内にあり,そこからデータを引き出して, そのディレクトリ内で作業する感じになる
  90. 90. マージしてみる Mac-mini:test sonson$ git checkout master Switched to branch 'master' Mac-mini:test sonson$ ls main.c develop master
  91. 91. あれ? Mac-mini:test sonson$ git checkout master Switched to branch 'master' Mac-mini:test sonson$ ls main.c Mac-mini:test sonson$ git merge develop -m "Merge new feature1." Merge made by the 'recursive' strategy. 0 files changed create mode 100644 feature1.c Mac-mini:test sonson$ developをmasterにマージ develop master
  92. 92. あれ? Mac-mini:test sonson$ git checkout master Switched to branch 'master' Mac-mini:test sonson$ ls main.c Mac-mini:test sonson$ git merge develop -m "Merge new feature1." Merge made by the 'recursive' strategy. 0 files changed create mode 100644 feature1.c Mac-mini:test sonson$ developをmasterにマージ develop master これをfast forwardマージといいます. ファイル等の変更にコンフリクト等がない場合は, そのままbranchを飛ばすだけでマージが成立するのです.
  93. 93. マージしてみる2 Mac-mini:test sonson$ git checkout master Switched to branch 'master' Mac-mini:test sonson$ ls main.c develop master
  94. 94. おー Mac-mini:test sonson$ git checkout master Switched to branch 'master' Mac-mini:test sonson$ ls main.c Mac-mini:test sonson$ git merge develop -m "Merge new feature1." --no-ff Merge made by the 'recursive' strategy. 0 files changed create mode 100644 feature1.c Mac-mini:test sonson$ developをmasterにマージ develop master
  95. 95. おー Mac-mini:test sonson$ git checkout master Switched to branch 'master' Mac-mini:test sonson$ ls main.c Mac-mini:test sonson$ git merge develop -m "Merge new feature1." --no-ff Merge made by the 'recursive' strategy. 0 files changed create mode 100644 feature1.c Mac-mini:test sonson$ developをmasterにマージ develop master これをno fast forwardマージといいます. 常に新しいコミットを作ってマージします.
  96. 96. おー Mac-mini:test sonson$ git checkout master Switched to branch 'master' Mac-mini:test sonson$ ls main.c Mac-mini:test sonson$ git merge develop -m "Merge new feature1." --no-ff Merge made by the 'recursive' strategy. 0 files changed create mode 100644 feature1.c Mac-mini:test sonson$ developをmasterにマージ develop master 手元でマージするときは必ず,--no-ffで行うべきです. どこでマージが行われたのかわからないからです. さっきの例は--no-ffだったのね (というか絶対コミットができる)
  97. 97. おー Mac-mini:test sonson$ git checkout master Switched to branch 'master' Mac-mini:test sonson$ ls main.c Mac-mini:test sonson$ git merge develop -m "Merge new feature1." --no-ff Merge made by the 'recursive' strategy. 0 files changed create mode 100644 feature1.c Mac-mini:test sonson$ developをmasterにマージ develop master ただし,pullするときには--ffでやる方がいいでしょう. ローカルに対してもコミットが発生してしまうので, コミットグラフがぐちゃぐちゃになってしまいます
  98. 98. おー Mac-mini:test sonson$ git checkout master Switched to branch 'master' Mac-mini:test sonson$ ls main.c Mac-mini:test sonson$ git merge develop -m "Merge new feature1." --no-ff Merge made by the 'recursive' strategy. 0 files changed create mode 100644 feature1.c Mac-mini:test sonson$ developをmasterにマージ develop master とは言っても,グラフがめちゃくちゃになっても コードはちゃんと保たれるのであまり心配することもありません. 最初は恐れずガンガンやって,後悔することにしましょう.
  99. 99. branch • gitのbranchは軽い • んでbranchのようで(svnの)branchではない • svnのようにコピーではありません • いくら作ってもリポジトリは大きくなりません • すぐに気軽に作って潰せます
  100. 100. わかった?      ____    /      \ ( ;;;;(   /  _ノ  ヽ__\) ;;;;) /    (─)  (─ /;;/ |       (__人__) l;;,´ ますますわからなくなったお・・・・・・・・ /      ∩ ノ)━・'/ これが何の役に立つんだお・・・・・・? (  \ / _ノ´.|  |   .\  "  /__|  |   \ /___ /
  101. 101.    / ̄ ̄\  /   _ノ  \  |    ( ●)(●) . |     (__人__)  このbranchとpush/pullを組み合わせると   |     ` ⌒´ノ  分散型の開発開発すごく捗るんだが・・・・ .  |         }   .  ヽ        }   仕方がない具体的な例で説明するか    ヽ     ノ        \    /    く  \        \    |     \   \         \     |    |ヽ、二⌒)、          \
  102. 102. gitを実践で考える
  103. 103. 実践
  104. 104. 例)アプリを展示会に出す master feature1 develop ついにver1が完成!明日から3日間展示会です!
  105. 105. cloneします master feature1 develop master feature1 develop
  106. 106. cloneします master feature1 develop master feature1 develop 展示会組 居残り組
  107. 107. 展示会の準備中 master feature1
  108. 108. 動かしたら・・・ master feature1 ちょwwwww おまwwwwwww S木さんの コードバグってる!!!
  109. 109. 動かしたら・・・ master feature1 どーすんのよー この場で直すかー
  110. 110. 動かしたら・・・ master どーすんのよー この場で直すかー branch切るよー feature1
  111. 111. デバッグ! master feature1 demo-fix
  112. 112. デバッグ! master demo-fix まだ何かヘンだなー feature1
  113. 113. 展示会も終わり・・・ master demo-fix feature1
  114. 114. さて,帰ってきたのでPush! master demo-fix feature1
  115. 115. さて,帰ってきたのでPush! master demo-fix feature1
  116. 116. おお,統合された master demo-fix develop feature1
  117. 117. マージして整理しようか master demo-fix develop feature1
  118. 118. 展示会でのfixどうする? master demo-fix develop feature1
  119. 119. よさげなのでマーーーージ master develop feature1 demo-fix
  120. 120. こっちもください master develop feature1
  121. 121. こっちもください master develop feature1
  122. 122. ちゃんちゃん master develop feature1
  123. 123. 祭りの後      ____    /      \ ( ;;;;(   /  _ノ  ヽ__\) ;;;;) /    (─)  (─ /;;/ |       (__人__) l;;,´ なんとなくわかったような・・・・・・・・ /      ∩ ノ)━・'/ なんだかわからないような・・・・・だお (  \ / _ノ´.|  |   .\  "  /__|  |   \ /___ /
  124. 124.    / ̄ ̄\  /   _ノ  \  |    ( ●)(●) . |     (__人__) しょせん概念は概念.   |     ` ⌒´ノ  実際にやらないとわからないだろJK .  |         } .  ヽ        }   この使い方を年頭にいれて使ってみるのが定石だ    ヽ     ノ        \    /    く  \        \    |     \   \         \     |    |ヽ、二⌒)、          \
  125. 125.      ____      /⌒  ⌒\ ホジホジ    /( ●)  (●)\   /::::::⌒(__人__)⌒::::: \  とりあえずやってみるお   |    mj |ー'´      |   \  〈__ノ       /     ノ  ノ
  126. 126.       ._        \ヽ, ,、         `''|/ノ          .|      _   |      \`ヽ、|       \, V          `L,,_          |ヽ、)  ,、         /    ヽYノ        /    r''ヽ、.|       |     `ー-ヽ|ヮ       |       `|       |.        |       ヽ、      |         ヽ____ノ         /_ノ ' ヽ_\       /(≡)   (≡)\      /::::::⌒(__人__)⌒::::: \      |     |r┬-|     |      \      `ー'´     /      /          \      (  |          |  )      \|    э    |/        (    ,,,,    ,ノ        \  、(U)ノ ノ          \/  /            ┼ヽ  -|r‐、. レ |          /  /\            d⌒) ./| _ノ  __ノ       ⊂⌒__)__)
  127. 127. Thank you. @sonson_twit http://sonson.jp
  128. 128. backup slide backup

×