gitことはじめ

128
Git ことはじめ bleis-tift February 26, 2011

Upload: bleis-tift

Post on 30-Jun-2015

7.280 views

Category:

Technology


5 download

DESCRIPTION

名古屋Ruby会議02での発表資料です。

TRANSCRIPT

Page 1: Gitことはじめ

Gitことはじめ

bleis-tift

February 26, 2011

Page 2: Gitことはじめ

自己紹介

id:bleis-tift / @bleis

名古屋で働くプログラマGitとかHudson(あ、Jenkins・・・)大好き

Page 3: Gitことはじめ

自己紹介

id:bleis-tift / @bleis

名古屋で働くプログラマ

GitとかHudson(あ、Jenkins・・・)大好き

Page 4: Gitことはじめ

自己紹介

id:bleis-tift / @bleis

名古屋で働くプログラマGitとかHudson(あ、Jenkins・・・)大好き

Page 5: Gitことはじめ

今日話すこと

Gitの導入方法Gitの使い方mergeや rebaseの話リポジトリが複数ある場合の話

Gitがなぜそうなっているか

Page 6: Gitことはじめ

今日話すこと

Gitの導入方法

Gitの使い方mergeや rebaseの話リポジトリが複数ある場合の話

Gitがなぜそうなっているか

Page 7: Gitことはじめ

今日話すこと

Gitの導入方法

Gitの使い方mergeや rebaseの話リポジトリが複数ある場合の話

Gitがなぜそうなっているか

Page 8: Gitことはじめ

今日話すこと

Gitの導入方法Gitの使い方

mergeや rebaseの話リポジトリが複数ある場合の話

Gitがなぜそうなっているか

Page 9: Gitことはじめ

今日話すこと

Gitの導入方法Gitの使い方

mergeや rebaseの話リポジトリが複数ある場合の話

Gitがなぜそうなっているか

Page 10: Gitことはじめ

今日話すこと

Gitの導入方法Gitの使い方mergeや rebaseの話

リポジトリが複数ある場合の話

Gitがなぜそうなっているか

Page 11: Gitことはじめ

今日話すこと

Gitの導入方法Gitの使い方mergeや rebaseの話

リポジトリが複数ある場合の話

Gitがなぜそうなっているか

Page 12: Gitことはじめ

今日話すこと

Gitの導入方法Gitの使い方mergeや rebaseの話リポジトリが複数ある場合の話

Gitがなぜそうなっているか

Page 13: Gitことはじめ

今日話すこと

Gitの導入方法Gitの使い方mergeや rebaseの話リポジトリが複数ある場合の話

Gitがなぜそうなっているか

Page 14: Gitことはじめ

今日話すこと

Gitの導入方法Gitの使い方mergeや rebaseの話リポジトリが複数ある場合の話

Gitがなぜそうなっているか

Page 15: Gitことはじめ

Gitって何?

分散バージョン管理システム(DVCS)のひとつ高速かつ高機能だけど概念はシンプル

Page 16: Gitことはじめ

Gitって何?

分散バージョン管理システム(DVCS)のひとつ

高速かつ高機能だけど概念はシンプル

Page 17: Gitことはじめ

Gitって何?

分散バージョン管理システム(DVCS)のひとつ高速かつ高機能

だけど概念はシンプル

Page 18: Gitことはじめ

Gitって何?

分散バージョン管理システム(DVCS)のひとつ高速かつ高機能だけど概念はシンプル

Page 19: Gitことはじめ

え、Rubyと関係あるの?

RubyはGitと仲良し!

というか GitHubと仲良し?

つまりGitを覚えると世界が広がる!あと単純にGit(というかDVCS)便利

Page 20: Gitことはじめ

え、Rubyと関係あるの?

RubyはGitと仲良し!

というか GitHubと仲良し?

つまりGitを覚えると世界が広がる!あと単純にGit(というかDVCS)便利

Page 21: Gitことはじめ

え、Rubyと関係あるの?

RubyはGitと仲良し!というか GitHubと仲良し?

つまりGitを覚えると世界が広がる!あと単純にGit(というかDVCS)便利

Page 22: Gitことはじめ

え、Rubyと関係あるの?

RubyはGitと仲良し!というか GitHubと仲良し?

つまりGitを覚えると世界が広がる!

あと単純にGit(というかDVCS)便利

Page 23: Gitことはじめ

え、Rubyと関係あるの?

RubyはGitと仲良し!というか GitHubと仲良し?

つまりGitを覚えると世界が広がる!あと単純にGit(というかDVCS)便利

Page 24: Gitことはじめ

Gitに対するイメージ

無駄にコマンド数が多い

→ 難しそう無駄に複雑 → 難しそうリビジョン番号ない → 難しそうetc...

「なぜそうなっているか」を知ることでGitを覚えるハードルを下げる!

Page 25: Gitことはじめ

Gitに対するイメージ

無駄にコマンド数が多い

→ 難しそう

無駄に複雑 → 難しそうリビジョン番号ない → 難しそうetc...

「なぜそうなっているか」を知ることでGitを覚えるハードルを下げる!

Page 26: Gitことはじめ

Gitに対するイメージ

無駄にコマンド数が多い → 難しそう

無駄に複雑

→ 難しそうリビジョン番号ない → 難しそうetc...

「なぜそうなっているか」を知ることでGitを覚えるハードルを下げる!

Page 27: Gitことはじめ

Gitに対するイメージ

無駄にコマンド数が多い → 難しそう無駄に複雑

→ 難しそう

リビジョン番号ない → 難しそうetc...

「なぜそうなっているか」を知ることでGitを覚えるハードルを下げる!

Page 28: Gitことはじめ

Gitに対するイメージ

無駄にコマンド数が多い → 難しそう無駄に複雑 → 難しそう

リビジョン番号ない

→ 難しそうetc...

「なぜそうなっているか」を知ることでGitを覚えるハードルを下げる!

Page 29: Gitことはじめ

Gitに対するイメージ

無駄にコマンド数が多い → 難しそう無駄に複雑 → 難しそうリビジョン番号ない

→ 難しそう

etc...

「なぜそうなっているか」を知ることでGitを覚えるハードルを下げる!

Page 30: Gitことはじめ

Gitに対するイメージ

無駄にコマンド数が多い → 難しそう無駄に複雑 → 難しそうリビジョン番号ない → 難しそう

etc...

「なぜそうなっているか」を知ることでGitを覚えるハードルを下げる!

Page 31: Gitことはじめ

Gitに対するイメージ

無駄にコマンド数が多い → 難しそう無駄に複雑 → 難しそうリビジョン番号ない → 難しそうetc...

「なぜそうなっているか」を知ることでGitを覚えるハードルを下げる!

Page 32: Gitことはじめ

Gitに対するイメージ

無駄にコマンド数が多い → 難しそう無駄に複雑 → 難しそうリビジョン番号ない → 難しそうetc...

「なぜそうなっているか」を知ることでGitを覚えるハードルを下げる!

Page 33: Gitことはじめ

注意

概念の話と言いつつ、インデックスの話はしません。

より知っておいてほしいことを重点的に解説します。

Page 34: Gitことはじめ

注意

概念の話と言いつつ、インデックスの話はしません。より知っておいてほしいことを

重点的に解説します。

Page 35: Gitことはじめ

いくつかの観点

動作実装概念

Page 36: Gitことはじめ

いくつかの観点

動作

実装概念

Page 37: Gitことはじめ

いくつかの観点

動作

実装

概念

Page 38: Gitことはじめ

いくつかの観点

動作実装概念

Page 39: Gitことはじめ

動作という観点

このコマンドを実行したらこうなる、という観点コマンドの絶対数を見て難しいと思うのは、この観点のみで見ているから一番目につく部分ではある

Page 40: Gitことはじめ

動作という観点

このコマンドを実行したらこうなる、という観点

コマンドの絶対数を見て難しいと思うのは、この観点のみで見ているから一番目につく部分ではある

Page 41: Gitことはじめ

動作という観点

このコマンドを実行したらこうなる、という観点コマンドの絶対数を見て難しいと思うのは、この観点のみで見ているから

一番目につく部分ではある

Page 42: Gitことはじめ

動作という観点

このコマンドを実行したらこうなる、という観点コマンドの絶対数を見て難しいと思うのは、この観点のみで見ているから一番目につく部分ではある

Page 43: Gitことはじめ

概念という観点

なぜそうなっているのか?につながる観点概念と動作を結び付けることができれば理解が早まるGitの概念は実は結構シンプルでわかりやすい

(と、俺は思う)

Page 44: Gitことはじめ

概念という観点

なぜそうなっているのか?につながる観点

概念と動作を結び付けることができれば理解が早まるGitの概念は実は結構シンプルでわかりやすい

(と、俺は思う)

Page 45: Gitことはじめ

概念という観点

なぜそうなっているのか?につながる観点概念と動作を結び付けることができれば理解が早まる

Gitの概念は実は結構シンプルでわかりやすい

(と、俺は思う)

Page 46: Gitことはじめ

概念という観点

なぜそうなっているのか?につながる観点概念と動作を結び付けることができれば理解が早まるGitの概念は実は結構シンプルでわかりやすい

(と、俺は思う)

Page 47: Gitことはじめ

概念という観点

なぜそうなっているのか?につながる観点概念と動作を結び付けることができれば理解が早まるGitの概念は実は結構シンプルでわかりやすい(と、俺は思う)

Page 48: Gitことはじめ

実装という観点

どう実現されているか、という観点これを意識できるようになると理解が深まる低レベルコマンドもある程度理解できるようになる

Page 49: Gitことはじめ

実装という観点

どう実現されているか、という観点

これを意識できるようになると理解が深まる低レベルコマンドもある程度理解できるようになる

Page 50: Gitことはじめ

実装という観点

どう実現されているか、という観点これを意識できるようになると理解が深まる

低レベルコマンドもある程度理解できるようになる

Page 51: Gitことはじめ

実装という観点

どう実現されているか、という観点これを意識できるようになると理解が深まる低レベルコマンドもある程度理解できるようになる

Page 52: Gitことはじめ

どういう順で学べばいい?

とりあえず概念を学び、

それと結びつく動作(コマンド)を学んで、余裕があったら実装も学ぶ

Page 53: Gitことはじめ

どういう順で学べばいい?

とりあえず概念を学び、それと結びつく動作(コマンド)を学んで、

余裕があったら実装も学ぶ

Page 54: Gitことはじめ

どういう順で学べばいい?

とりあえず概念を学び、それと結びつく動作(コマンド)を学んで、余裕があったら実装も学ぶ

Page 55: Gitことはじめ

参考までに

ProGit 概念寄りの動作の説明が中心のサイト。入門Git 概念の説明が中心の本。最初の一冊に

どうぞ。実用Git 実装寄りの概念中心の本。入門Gitで物

足りなくなったら。入門 git 動作の説明が中心の本。上二冊が難し

いならこれで補助。

Page 56: Gitことはじめ

SVNとの概念上の大きな違い

分散か非分散か?いやいや・・・

SVNではリポジトリ一個に対して作業ディレクトリが複数Gitではリポジトリ一個に対して作業ディレクトリが一個

ひとつのリポジトリに着目すると実はGitの方がシンプル!

Page 57: Gitことはじめ

SVNとの概念上の大きな違い

分散か非分散か?いやいや・・・SVNではリポジトリ一個に対して作業ディレクトリが複数

Gitではリポジトリ一個に対して作業ディレクトリが一個

ひとつのリポジトリに着目すると実はGitの方がシンプル!

Page 58: Gitことはじめ

SVNとの概念上の大きな違い

分散か非分散か?いやいや・・・SVNではリポジトリ一個に対して作業ディレクトリが複数Gitではリポジトリ一個に対して作業ディレクトリが一個

ひとつのリポジトリに着目すると実はGitの方がシンプル!

Page 59: Gitことはじめ

SVNとの概念上の大きな違い

分散か非分散か?いやいや・・・SVNではリポジトリ一個に対して作業ディレクトリが複数Gitではリポジトリ一個に対して作業ディレクトリが一個

ひとつのリポジトリに着目すると実はGitの方がシンプル!

Page 60: Gitことはじめ

何が嬉しいの?

SVNでは各作業ディレクトリがリポジトリを介して共有されている→競合怖い・・・

Gitでは独立している→そもそも競合が発生しない

Gitではやりたい放題できる!

Page 61: Gitことはじめ

何が嬉しいの?

SVNでは各作業ディレクトリがリポジトリを介して共有されている→競合怖い・・・Gitでは独立している→そもそも競合が発生しない

Gitではやりたい放題できる!

Page 62: Gitことはじめ

何が嬉しいの?

SVNでは各作業ディレクトリがリポジトリを介して共有されている→競合怖い・・・Gitでは独立している→そもそも競合が発生しない

Gitではやりたい放題できる!

Page 63: Gitことはじめ

Gitのオブジェクト

Gitには 4つのオブジェクトがあるそのすべてが一度作られたらその後変更されない(イミュータブル)オブジェクトを一意に決定するために SHA-1ハッシュを使用

Page 64: Gitことはじめ

Gitのオブジェクト

Gitには 4つのオブジェクトがある

そのすべてが一度作られたらその後変更されない(イミュータブル)オブジェクトを一意に決定するために SHA-1ハッシュを使用

Page 65: Gitことはじめ

Gitのオブジェクト

Gitには 4つのオブジェクトがあるそのすべてが一度作られたらその後変更されない(イミュータブル)

オブジェクトを一意に決定するために SHA-1ハッシュを使用

Page 66: Gitことはじめ

Gitのオブジェクト

Gitには 4つのオブジェクトがあるそのすべてが一度作られたらその後変更されない(イミュータブル)オブジェクトを一意に決定するために SHA-1ハッシュを使用

Page 67: Gitことはじめ

4つのオブジェクト

commit コミットを表すオブジェクト。親commitのハッシュ、treeオブジェクトのハッシュ、コミット日時、コミットメッセージなどを保持。

tree ディレクトリを表すオブジェクト。保持する子 tree、子 blobオブジェクトのハッシュやファイルモードやファイル名などを保持。

blob ファイルの中身を表すオブジェクト。tag 注釈つきのタグを表すオブジェクト。説明は省略。

Page 68: Gitことはじめ

4つのオブジェクト

commit コミットを表すオブジェクト。親commitのハッシュ、treeオブジェクトのハッシュ、コミット日時、コミットメッセージなどを保持。

tree ディレクトリを表すオブジェクト。保持する子 tree、子 blobオブジェクトのハッシュやファイルモードやファイル名などを保持。

blob ファイルの中身を表すオブジェクト。tag 注釈つきのタグを表すオブジェクト。説明は省略。

Page 69: Gitことはじめ

4つのオブジェクト

commit コミットを表すオブジェクト。親commitのハッシュ、treeオブジェクトのハッシュ、コミット日時、コミットメッセージなどを保持。

tree ディレクトリを表すオブジェクト。保持する子 tree、子 blobオブジェクトのハッシュやファイルモードやファイル名などを保持。

blob ファイルの中身を表すオブジェクト。tag 注釈つきのタグを表すオブジェクト。説明は省略。

Page 70: Gitことはじめ

4つのオブジェクト

commit コミットを表すオブジェクト。親commitのハッシュ、treeオブジェクトのハッシュ、コミット日時、コミットメッセージなどを保持。

tree ディレクトリを表すオブジェクト。保持する子 tree、子 blobオブジェクトのハッシュやファイルモードやファイル名などを保持。

blob ファイルの中身を表すオブジェクト。

tag 注釈つきのタグを表すオブジェクト。説明は省略。

Page 71: Gitことはじめ

4つのオブジェクト

commit コミットを表すオブジェクト。親commitのハッシュ、treeオブジェクトのハッシュ、コミット日時、コミットメッセージなどを保持。

tree ディレクトリを表すオブジェクト。保持する子 tree、子 blobオブジェクトのハッシュやファイルモードやファイル名などを保持。

blob ファイルの中身を表すオブジェクト。tag 注釈つきのタグを表すオブジェクト。説明は省略。

Page 72: Gitことはじめ

よく見る図

ひとつひとつの丸が commitオブジェクトちょっと拡大してみましょう

Page 73: Gitことはじめ

よく見る図

ひとつひとつの丸が commitオブジェクトちょっと拡大してみましょう

Page 74: Gitことはじめ

よく見る図

ひとつひとつの丸が commitオブジェクト

ちょっと拡大してみましょう

Page 75: Gitことはじめ

よく見る図

ひとつひとつの丸が commitオブジェクトちょっと拡大してみましょう

Page 76: Gitことはじめ

拡大

Page 77: Gitことはじめ

拡大

三角は treeオブジェクト

Page 78: Gitことはじめ

拡大

三角は treeオブジェクトcommitはひとつの treeを持つ

Page 79: Gitことはじめ

拡大

Page 80: Gitことはじめ

Gitリポジトリの作られ方

Page 81: Gitことはじめ

Gitリポジトリの作られ方

Page 82: Gitことはじめ

Gitリポジトリの作られ方

git add .

するとtreeオブジェクトや

blobオブジェクトが作られる

Page 83: Gitことはじめ

Gitリポジトリの作られ方

git commit

でcommitオブジェクトが

作られる

Page 84: Gitことはじめ

Gitリポジトリの作られ方

aを編集してa'に

Page 85: Gitことはじめ

Gitリポジトリの作られ方

aを編集してa'に

ハッシュ値は

子要素に影響を

受ける

Page 86: Gitことはじめ

Gitリポジトリの作られ方

aを編集してa'に

ハッシュ値は

子要素に影響を

受ける

t以下は弄ってないので

そのままのものが使われる

Page 87: Gitことはじめ

Gitリポジトリの作られ方

a'をt配下に移動

Page 88: Gitことはじめ

ハッシュを使う理由

リビジョン番号ではリポジトリ内での一意性しか確保できない全てのオブジェクトを統一的に扱えるいろいろと高速

メリットのほうが大きいと思うよ!ブランチとかタグ使えばそんなに不便じゃないですし!

Page 89: Gitことはじめ

ハッシュを使う理由

リビジョン番号ではリポジトリ内での一意性しか確保できない

全てのオブジェクトを統一的に扱えるいろいろと高速

メリットのほうが大きいと思うよ!ブランチとかタグ使えばそんなに不便じゃないですし!

Page 90: Gitことはじめ

ハッシュを使う理由

リビジョン番号ではリポジトリ内での一意性しか確保できない全てのオブジェクトを統一的に扱える

いろいろと高速

メリットのほうが大きいと思うよ!ブランチとかタグ使えばそんなに不便じゃないですし!

Page 91: Gitことはじめ

ハッシュを使う理由

リビジョン番号ではリポジトリ内での一意性しか確保できない全てのオブジェクトを統一的に扱えるいろいろと高速

メリットのほうが大きいと思うよ!ブランチとかタグ使えばそんなに不便じゃないですし!

Page 92: Gitことはじめ

ハッシュを使う理由

リビジョン番号ではリポジトリ内での一意性しか確保できない全てのオブジェクトを統一的に扱えるいろいろと高速

メリットのほうが大きいと思うよ!

ブランチとかタグ使えばそんなに不便じゃないですし!

Page 93: Gitことはじめ

ハッシュを使う理由

リビジョン番号ではリポジトリ内での一意性しか確保できない全てのオブジェクトを統一的に扱えるいろいろと高速

メリットのほうが大きいと思うよ!ブランチとかタグ使えばそんなに不便じゃないですし!

Page 94: Gitことはじめ

ブランチとタグ

commitオブジェクトのハッシュ値を保持しているだけ。

Page 95: Gitことはじめ

ブランチとタグ

commitオブジェクトのハッシュ値を保持しているだけ。

Page 96: Gitことはじめ

ブランチとタグ

commitオブジェクトのハッシュ値を保持しているだけ。

Page 97: Gitことはじめ

ブランチとタグの違い

ブランチ 動くタグ 動かない

Page 98: Gitことはじめ

ブランチとタグの違い

Page 99: Gitことはじめ

ブランチとタグの違い

Page 100: Gitことはじめ

ブランチとタグの違い

Page 101: Gitことはじめ

ブランチとタグの違い

Page 102: Gitことはじめ

reset

個人的には一番重要と思っているコマンドブランチの場所を設定しなおす「リセット」という語感に反して、未来に進むこともできるresetが使いこなせるようになれば、Gitに慣れてきたといっていいかも

Page 103: Gitことはじめ

reset

個人的には一番重要と思っているコマンド

ブランチの場所を設定しなおす「リセット」という語感に反して、未来に進むこともできるresetが使いこなせるようになれば、Gitに慣れてきたといっていいかも

Page 104: Gitことはじめ

reset

個人的には一番重要と思っているコマンドブランチの場所を設定しなおす

「リセット」という語感に反して、未来に進むこともできるresetが使いこなせるようになれば、Gitに慣れてきたといっていいかも

Page 105: Gitことはじめ

reset

個人的には一番重要と思っているコマンドブランチの場所を設定しなおす「リセット」という語感に反して、未来に進むこともできる

resetが使いこなせるようになれば、Gitに慣れてきたといっていいかも

Page 106: Gitことはじめ

reset

個人的には一番重要と思っているコマンドブランチの場所を設定しなおす「リセット」という語感に反して、未来に進むこともできるresetが使いこなせるようになれば、Gitに慣れてきたといっていいかも

Page 107: Gitことはじめ

reset

Page 108: Gitことはじめ

reset

git reset --hard hoge

Page 109: Gitことはじめ

reset

git reset --hard hoge

Page 110: Gitことはじめ

reset

git reset --hard master~2

Page 111: Gitことはじめ

reset

git reset --hard master~2

Page 112: Gitことはじめ

reset

git reset --hard a

Page 113: Gitことはじめ

reset

git reset --hard a

Page 114: Gitことはじめ

reset

git reset --hard b~4

Page 115: Gitことはじめ

reset

git reset --hard b~4

Page 116: Gitことはじめ

resetが理解できれば・・・

コミットグラフを頭に思い浮かべやすくなる簡単に好きな時点を取り出せるようになるresetしてしまえば、

そこから新しいブランチを生やすミスったもの(マージ含む)をなかったことになどなど自由自在

俺TUEEE!感checkout派もいるので注意が必要

Page 117: Gitことはじめ

resetが理解できれば・・・

コミットグラフを頭に思い浮かべやすくなる

簡単に好きな時点を取り出せるようになるresetしてしまえば、

そこから新しいブランチを生やすミスったもの(マージ含む)をなかったことになどなど自由自在

俺TUEEE!感checkout派もいるので注意が必要

Page 118: Gitことはじめ

resetが理解できれば・・・

コミットグラフを頭に思い浮かべやすくなる簡単に好きな時点を取り出せるようになるresetしてしまえば、

そこから新しいブランチを生やすミスったもの(マージ含む)をなかったことになどなど自由自在

俺TUEEE!感checkout派もいるので注意が必要

Page 119: Gitことはじめ

resetが理解できれば・・・

コミットグラフを頭に思い浮かべやすくなる簡単に好きな時点を取り出せるようになるresetしてしまえば、

そこから新しいブランチを生やす

ミスったもの(マージ含む)をなかったことになどなど自由自在

俺TUEEE!感checkout派もいるので注意が必要

Page 120: Gitことはじめ

resetが理解できれば・・・

コミットグラフを頭に思い浮かべやすくなる簡単に好きな時点を取り出せるようになるresetしてしまえば、

そこから新しいブランチを生やすミスったもの(マージ含む)をなかったことに

などなど自由自在

俺TUEEE!感checkout派もいるので注意が必要

Page 121: Gitことはじめ

resetが理解できれば・・・

コミットグラフを頭に思い浮かべやすくなる簡単に好きな時点を取り出せるようになるresetしてしまえば、

そこから新しいブランチを生やすミスったもの(マージ含む)をなかったことになどなど自由自在

俺TUEEE!感checkout派もいるので注意が必要

Page 122: Gitことはじめ

resetが理解できれば・・・

コミットグラフを頭に思い浮かべやすくなる簡単に好きな時点を取り出せるようになるresetしてしまえば、

そこから新しいブランチを生やすミスったもの(マージ含む)をなかったことになどなど自由自在

俺TUEEE!感

checkout派もいるので注意が必要

Page 123: Gitことはじめ

resetが理解できれば・・・

コミットグラフを頭に思い浮かべやすくなる簡単に好きな時点を取り出せるようになるresetしてしまえば、

そこから新しいブランチを生やすミスったもの(マージ含む)をなかったことになどなど自由自在

俺TUEEE!感checkout派もいるので注意が必要

Page 124: Gitことはじめ

まとめ

ひつとのリポジトリに注目すれば、SVNよりシンプルGitはなんでもイミュータブル動作が高速→概念がシンプルかつ素晴らしい概念を理解できれば使い方は後からついてくる

Page 125: Gitことはじめ

まとめ

ひつとのリポジトリに注目すれば、SVNよりシンプル

Gitはなんでもイミュータブル動作が高速→概念がシンプルかつ素晴らしい概念を理解できれば使い方は後からついてくる

Page 126: Gitことはじめ

まとめ

ひつとのリポジトリに注目すれば、SVNよりシンプルGitはなんでもイミュータブル

動作が高速→概念がシンプルかつ素晴らしい概念を理解できれば使い方は後からついてくる

Page 127: Gitことはじめ

まとめ

ひつとのリポジトリに注目すれば、SVNよりシンプルGitはなんでもイミュータブル動作が高速→概念がシンプルかつ素晴らしい

概念を理解できれば使い方は後からついてくる

Page 128: Gitことはじめ

まとめ

ひつとのリポジトリに注目すれば、SVNよりシンプルGitはなんでもイミュータブル動作が高速→概念がシンプルかつ素晴らしい概念を理解できれば使い方は後からついてくる