Suche senden
Hochladen
Dive into .git 日本語版
•
8 gefällt mir
•
1,949 views
N
nishio
Folgen
社内勉強会で使った資料です
Weniger lesen
Mehr lesen
Melden
Teilen
Melden
Teilen
1 von 22
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
Redis Intro Osc2010 Tokyo Spring
Redis Intro Osc2010 Tokyo Spring
Makoto Ohnami
Neo4jでつなぐ知見のネットワーク [Pycon2016 LT]
Neo4jでつなぐ知見のネットワーク [Pycon2016 LT]
創史 花村
Aizu lt tokyo_luxion
Aizu lt tokyo_luxion
Tomoaki Tamura
Gitコマンド勉強会 第2回 stash
Gitコマンド勉強会 第2回 stash
Kazuki Sakai
ハッシュと配列
ハッシュと配列
TENTO_slide
Chiba pm#1 - ArangoDB for Perl
Chiba pm#1 - ArangoDB for Perl
Hideaki Ohno
BMXUG つきじ#4
BMXUG つきじ#4
K Kimura
Common LispでGPGPU
Common LispでGPGPU
gos-k
Empfohlen
Redis Intro Osc2010 Tokyo Spring
Redis Intro Osc2010 Tokyo Spring
Makoto Ohnami
Neo4jでつなぐ知見のネットワーク [Pycon2016 LT]
Neo4jでつなぐ知見のネットワーク [Pycon2016 LT]
創史 花村
Aizu lt tokyo_luxion
Aizu lt tokyo_luxion
Tomoaki Tamura
Gitコマンド勉強会 第2回 stash
Gitコマンド勉強会 第2回 stash
Kazuki Sakai
ハッシュと配列
ハッシュと配列
TENTO_slide
Chiba pm#1 - ArangoDB for Perl
Chiba pm#1 - ArangoDB for Perl
Hideaki Ohno
BMXUG つきじ#4
BMXUG つきじ#4
K Kimura
Common LispでGPGPU
Common LispでGPGPU
gos-k
MongoDB: システム可用性を拡張するインデクス戦略
MongoDB: システム可用性を拡張するインデクス戦略
ippei_suzuki
New Generation Build System "Fly"
New Generation Build System "Fly"
deepblue will
Sphinxでドキュメントを書こう
Sphinxでドキュメントを書こう
Kazufumi Ohkawa
Juliaを使った機械学習
Juliaを使った機械学習
Aki Ariga
Offline Hoogleで何処でもはすはす
Offline Hoogleで何処でもはすはす
Kiwamu Okabe
Github勉強会
Github勉強会
From Atom
Git天空闘技場_ハンズオン
Git天空闘技場_ハンズオン
sinsoku listy
20220111 SoftwareDesign #32 kitazaki
20220111 SoftwareDesign #32 kitazaki
Ayachika Kitazaki
カウチなやつら CouchDB in the room
カウチなやつら CouchDB in the room
Makoto Ohnami
Go conference 2017 Lightning talk
Go conference 2017 Lightning talk
mokelab
Fess/Elasticsearchを使った業務で使える?全文検索への道
Fess/Elasticsearchを使った業務で使える?全文検索への道
Shinsuke Sugaya
LastaFluteでKotlinをはじめよう
LastaFluteでKotlinをはじめよう
Shinsuke Sugaya
nioで作ったBufferedWriterに変えたら例外になった
nioで作ったBufferedWriterに変えたら例外になった
chibochibo
pythonでオフィス快適化計画
pythonでオフィス快適化計画
Kazufumi Ohkawa
KJ法のW型問題解決モデルとU理論、それぞれの問題意識 加筆版
KJ法のW型問題解決モデルとU理論、それぞれの問題意識 加筆版
nishio
読む技術
読む技術
nishio
カイ2乗分布について
カイ2乗分布について
nishio
エンジニアのための学ぶ技術
エンジニアのための学ぶ技術
nishio
般若心経
般若心経
nishio
テストとデバッグ
テストとデバッグ
nishio
モジュールとはなにか?
モジュールとはなにか?
nishio
般若心経
般若心経
nishio
Weitere ähnliche Inhalte
Was ist angesagt?
MongoDB: システム可用性を拡張するインデクス戦略
MongoDB: システム可用性を拡張するインデクス戦略
ippei_suzuki
New Generation Build System "Fly"
New Generation Build System "Fly"
deepblue will
Sphinxでドキュメントを書こう
Sphinxでドキュメントを書こう
Kazufumi Ohkawa
Juliaを使った機械学習
Juliaを使った機械学習
Aki Ariga
Offline Hoogleで何処でもはすはす
Offline Hoogleで何処でもはすはす
Kiwamu Okabe
Github勉強会
Github勉強会
From Atom
Git天空闘技場_ハンズオン
Git天空闘技場_ハンズオン
sinsoku listy
20220111 SoftwareDesign #32 kitazaki
20220111 SoftwareDesign #32 kitazaki
Ayachika Kitazaki
カウチなやつら CouchDB in the room
カウチなやつら CouchDB in the room
Makoto Ohnami
Go conference 2017 Lightning talk
Go conference 2017 Lightning talk
mokelab
Fess/Elasticsearchを使った業務で使える?全文検索への道
Fess/Elasticsearchを使った業務で使える?全文検索への道
Shinsuke Sugaya
LastaFluteでKotlinをはじめよう
LastaFluteでKotlinをはじめよう
Shinsuke Sugaya
nioで作ったBufferedWriterに変えたら例外になった
nioで作ったBufferedWriterに変えたら例外になった
chibochibo
pythonでオフィス快適化計画
pythonでオフィス快適化計画
Kazufumi Ohkawa
Was ist angesagt?
(14)
MongoDB: システム可用性を拡張するインデクス戦略
MongoDB: システム可用性を拡張するインデクス戦略
New Generation Build System "Fly"
New Generation Build System "Fly"
Sphinxでドキュメントを書こう
Sphinxでドキュメントを書こう
Juliaを使った機械学習
Juliaを使った機械学習
Offline Hoogleで何処でもはすはす
Offline Hoogleで何処でもはすはす
Github勉強会
Github勉強会
Git天空闘技場_ハンズオン
Git天空闘技場_ハンズオン
20220111 SoftwareDesign #32 kitazaki
20220111 SoftwareDesign #32 kitazaki
カウチなやつら CouchDB in the room
カウチなやつら CouchDB in the room
Go conference 2017 Lightning talk
Go conference 2017 Lightning talk
Fess/Elasticsearchを使った業務で使える?全文検索への道
Fess/Elasticsearchを使った業務で使える?全文検索への道
LastaFluteでKotlinをはじめよう
LastaFluteでKotlinをはじめよう
nioで作ったBufferedWriterに変えたら例外になった
nioで作ったBufferedWriterに変えたら例外になった
pythonでオフィス快適化計画
pythonでオフィス快適化計画
Andere mochten auch
KJ法のW型問題解決モデルとU理論、それぞれの問題意識 加筆版
KJ法のW型問題解決モデルとU理論、それぞれの問題意識 加筆版
nishio
読む技術
読む技術
nishio
カイ2乗分布について
カイ2乗分布について
nishio
エンジニアのための学ぶ技術
エンジニアのための学ぶ技術
nishio
般若心経
般若心経
nishio
テストとデバッグ
テストとデバッグ
nishio
モジュールとはなにか?
モジュールとはなにか?
nishio
般若心経
般若心経
nishio
Dive into .git
Dive into .git
nishio
クリーンスペース体験記
クリーンスペース体験記
nishio
数学的帰納法は帰納ではない?
数学的帰納法は帰納ではない?
nishio
ZDD入門-お姉さんを救う方法
ZDD入門-お姉さんを救う方法
nishio
機械学習キャンバス0.1
機械学習キャンバス0.1
nishio
Wifiで位置推定
Wifiで位置推定
nishio
KJ法の実践
KJ法の実践
nishio
線形?非線形?
線形?非線形?
nishio
Long Short-term Memory
Long Short-term Memory
nishio
勾配降下法の最適化アルゴリズム
勾配降下法の最適化アルゴリズム
nishio
Andere mochten auch
(18)
KJ法のW型問題解決モデルとU理論、それぞれの問題意識 加筆版
KJ法のW型問題解決モデルとU理論、それぞれの問題意識 加筆版
読む技術
読む技術
カイ2乗分布について
カイ2乗分布について
エンジニアのための学ぶ技術
エンジニアのための学ぶ技術
般若心経
般若心経
テストとデバッグ
テストとデバッグ
モジュールとはなにか?
モジュールとはなにか?
般若心経
般若心経
Dive into .git
Dive into .git
クリーンスペース体験記
クリーンスペース体験記
数学的帰納法は帰納ではない?
数学的帰納法は帰納ではない?
ZDD入門-お姉さんを救う方法
ZDD入門-お姉さんを救う方法
機械学習キャンバス0.1
機械学習キャンバス0.1
Wifiで位置推定
Wifiで位置推定
KJ法の実践
KJ法の実践
線形?非線形?
線形?非線形?
Long Short-term Memory
Long Short-term Memory
勾配降下法の最適化アルゴリズム
勾配降下法の最適化アルゴリズム
Ähnlich wie Dive into .git 日本語版
今さら聞けない人のためのGit超入門
今さら聞けない人のためのGit超入門
VirtualTech Japan Inc./Begi.net Inc.
今さら聞けない人のためのGit超入門 GitLab 14対応版
今さら聞けない人のためのGit超入門 GitLab 14対応版
VirtualTech Japan Inc./Begi.net Inc.
今さら聞けない人のためのGit超入門 2019/11/21
今さら聞けない人のためのGit超入門 2019/11/21
VirtualTech Japan Inc./Begi.net Inc.
Yesod on Heroku
Yesod on Heroku
Takahiro Himura
gitを使う準備をしよう - 初級編
gitを使う準備をしよう - 初級編
Sanae Yamashita
Git overview (v 0.96)
Git overview (v 0.96)
Tatsuki Sugiura
今さら聞けない人のためのgit超入門
今さら聞けない人のためのgit超入門
VirtualTech Japan Inc./Begi.net Inc.
Git pyfes201207-presen
Git pyfes201207-presen
Kouhei Maeda
Git 仕組み 入門
Git 仕組み 入門
Tomohiko Himura
Gitの使い方あれこれ
Gitの使い方あれこれ
よしだ あつし
Git (実践入門編)
Git (実践入門編)
Naomichi Yamakita
実践 Git - 低レベルに知る Git
実践 Git - 低レベルに知る Git
Youhei Nitta
今さら聞けない人のためのGit超入門 GitLab 13対応版
今さら聞けない人のためのGit超入門 GitLab 13対応版
VirtualTech Japan Inc./Begi.net Inc.
P4p20120408
P4p20120408
Naoto Koshikawa
Git
Git
Appresso Engineering Team
Debianを用いたCortex-M3マイコン開発事例のご紹介
Debianを用いたCortex-M3マイコン開発事例のご紹介
Kiwamu Okabe
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
tamtam180
Getting Started GraalVM (再アップロード)
Getting Started GraalVM (再アップロード)
tamtam180
Git-dojo In Sendagaya.rb
Git-dojo In Sendagaya.rb
Jun Fukaya
20120516 第7回ウフィカ社内ハンズオン Git基礎
20120516 第7回ウフィカ社内ハンズオン Git基礎
Makoto Yamazaki
Ähnlich wie Dive into .git 日本語版
(20)
今さら聞けない人のためのGit超入門
今さら聞けない人のためのGit超入門
今さら聞けない人のためのGit超入門 GitLab 14対応版
今さら聞けない人のためのGit超入門 GitLab 14対応版
今さら聞けない人のためのGit超入門 2019/11/21
今さら聞けない人のためのGit超入門 2019/11/21
Yesod on Heroku
Yesod on Heroku
gitを使う準備をしよう - 初級編
gitを使う準備をしよう - 初級編
Git overview (v 0.96)
Git overview (v 0.96)
今さら聞けない人のためのgit超入門
今さら聞けない人のためのgit超入門
Git pyfes201207-presen
Git pyfes201207-presen
Git 仕組み 入門
Git 仕組み 入門
Gitの使い方あれこれ
Gitの使い方あれこれ
Git (実践入門編)
Git (実践入門編)
実践 Git - 低レベルに知る Git
実践 Git - 低レベルに知る Git
今さら聞けない人のためのGit超入門 GitLab 13対応版
今さら聞けない人のためのGit超入門 GitLab 13対応版
P4p20120408
P4p20120408
Git
Git
Debianを用いたCortex-M3マイコン開発事例のご紹介
Debianを用いたCortex-M3マイコン開発事例のご紹介
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
Getting Started GraalVM (再アップロード)
Getting Started GraalVM (再アップロード)
Git-dojo In Sendagaya.rb
Git-dojo In Sendagaya.rb
20120516 第7回ウフィカ社内ハンズオン Git基礎
20120516 第7回ウフィカ社内ハンズオン Git基礎
Mehr von nishio
量子アニーリングマシンのプログラミング
量子アニーリングマシンのプログラミング
nishio
夏プロ報告
夏プロ報告
nishio
ITと経営
ITと経営
nishio
部分観測モンテカルロ計画法を用いたガイスターAI
部分観測モンテカルロ計画法を用いたガイスターAI
nishio
交渉力について
交渉力について
nishio
If文から機械学習への道
If文から機械学習への道
nishio
組織横断型研究室構想
組織横断型研究室構想
nishio
2017首都大学東京情報通信特別講義
2017首都大学東京情報通信特別講義
nishio
強化学習その5
強化学習その5
nishio
良いアイデアを出すための方法
良いアイデアを出すための方法
nishio
強化学習その4
強化学習その4
nishio
強化学習その3
強化学習その3
nishio
強化学習その2
強化学習その2
nishio
強化学習その1
強化学習その1
nishio
首都大学東京「情報通信特別講義」2016年西尾担当分
首都大学東京「情報通信特別講義」2016年西尾担当分
nishio
ESP8266EXで位置推定
ESP8266EXで位置推定
nishio
Raspberry PiでWifiルータを作る
Raspberry PiでWifiルータを作る
nishio
Wifiにつながるデバイス(ESP8266EX, ESP-WROOM-02, ESPr Developerなど)
Wifiにつながるデバイス(ESP8266EX, ESP-WROOM-02, ESPr Developerなど)
nishio
「ネットワークを作る」ってどういうこと?
「ネットワークを作る」ってどういうこと?
nishio
「ネットワークを作ることでイノベーションを加速」ってどういうこと?
「ネットワークを作ることでイノベーションを加速」ってどういうこと?
nishio
Mehr von nishio
(20)
量子アニーリングマシンのプログラミング
量子アニーリングマシンのプログラミング
夏プロ報告
夏プロ報告
ITと経営
ITと経営
部分観測モンテカルロ計画法を用いたガイスターAI
部分観測モンテカルロ計画法を用いたガイスターAI
交渉力について
交渉力について
If文から機械学習への道
If文から機械学習への道
組織横断型研究室構想
組織横断型研究室構想
2017首都大学東京情報通信特別講義
2017首都大学東京情報通信特別講義
強化学習その5
強化学習その5
良いアイデアを出すための方法
良いアイデアを出すための方法
強化学習その4
強化学習その4
強化学習その3
強化学習その3
強化学習その2
強化学習その2
強化学習その1
強化学習その1
首都大学東京「情報通信特別講義」2016年西尾担当分
首都大学東京「情報通信特別講義」2016年西尾担当分
ESP8266EXで位置推定
ESP8266EXで位置推定
Raspberry PiでWifiルータを作る
Raspberry PiでWifiルータを作る
Wifiにつながるデバイス(ESP8266EX, ESP-WROOM-02, ESPr Developerなど)
Wifiにつながるデバイス(ESP8266EX, ESP-WROOM-02, ESPr Developerなど)
「ネットワークを作る」ってどういうこと?
「ネットワークを作る」ってどういうこと?
「ネットワークを作ることでイノベーションを加速」ってどういうこと?
「ネットワークを作ることでイノベーションを加速」ってどういうこと?
Dive into .git 日本語版
1.
Dive into .git
2012-05-24 西尾泰和
2.
about • このスライドは社内勉強会で10分間で gitの中身を見てみるデモをするために
アンチョコとして作られたものです。 • 1ページ16スライドで印刷すると1枚で 収まるのでちょうどいいかと思います。
3.
Gitよくわからん? • 「Gitのいろんな概念が難しい」? • じゃあ概念は置いといて、
「物理的にはどうなってんの?」 を確認してみよう! • Gitがどんなものかイメージしやすくなれば幸い
4.
実験用のリポジトリを作る $ mkdir test
種も仕掛けもないただの $ cd test 空のディレクトリを作る $ ls -a . .. $ git init Initialized empty Git repository in .../test/.git/ ←できた! $ git init test でもOK
5.
$ ls -a .
.. .git リポジトリができた!
6.
中身を見てみよう $ cd .git $
tree . |-- HEAD |-- config |-- description |-- hooks |-- info | `-- exclude |-- objects | |-- info | `-- pack `-- refs |-- heads `-- tags hooksの中身は省略した
7.
コミットしたら
何が変わる? $ cd .. $ touch README $ git add README $ git commit -m “initial commit” [master (root-commit) 4dd66d3] initial commit
8.
objectsが増えた $ tree .git/objects .git/objects |--
4d | `-- d66d3a32a66f3578317717ccfb18 |-- 54 | `-- 3b9bebdc6bd5c4b22136034a95dd |-- e6 | `-- 9de29bb2d1d6434b8b29ae775ad8 |-- info `-- pack 長いファイル名の末尾は省略した 他にも変わる部分があるが今回は割愛
9.
中を見てみよう!
表示スクリプトを作る $ cat > show.py #!/usr/bin/env python import sys import zlib data = file(sys.argv[1], "rb").read() data = zlib.decompress(data) print repr(data) 以下ではshow.py。chmod +xを忘れずに
10.
Commitの中身 $ ./show.py .git/objects/4d/d6... 'commit
201x00 tree 543b...n author NISHIO Hirokazu <...> 1337655529 +0900n committer NISHIO Hirokazu <...> 1337655529 +0900n n initial commitn' ハッシュ値はコミット時のメッセージに表示されている 適当に改行を入れた tree 543bに注目
11.
Treeの中身 $ ./show.py 54/3b... 'tree
34x00 100644 READMEx00 xe6x9dxe2x9b...' 適当に改行を入れた e69bに注目
12.
Blobの中身 $ ./show.py e6/9d... 'blob
0x00' これがREADMEの中身 今は空なのでサイズが0 x00の後に何もない
13.
ファイル名 $ python -c
“import hashlib; hashlib.sha1('blob 0x00').hexdigest()” 'e69de29b...' 実は中身のSHA1ハッシュ!
14.
まとめ • リポジトリは.git/の中に入っている • .git/objects/に、sha1ハッシュを名前にし、
値をzlibで圧縮して、いろいろ入っている • 「いろいろ」の中にはcommitオブジェクト、 treeオブジェクト、blobオブジェクト • 今回はtagやrefsの話は割愛(次回?)
15.
やってみよう • READMEを編集してどう変わるか観察しよう • 新しいcommitオブジェクトには
「parent <ハッシュ値>」の行がある • 新しいblobにはREADMEの内容が入っている • 新しいファイルを追加してみよう。Treeはどう 変わる? • ファイルに追記したら?blobは差分?全体?
16.
17.
おまけ • git show
--format=rawがぜんぜんraw じゃなくて使いものにならない話
18.
中を見てみよう $ git show
--format=raw 4dd6 commit 4dd66d3a32a66f3578317717ccfb1876d43034ea tree 543b9bebdc6bd5c4b22136034a95dd097a57d3dd author NISHIO Hirokazu <...> 1337138246 +0900 committer NISHIO Hirokazu <...> 1337138246 +0900 initial commit diff --git a/README b/README new file mode 100644 index 0000000..e69de29 メールアドレスは省略した
19.
Treeの中身 $ git show
--format=raw 543b tree 543b README
20.
Blobの中身 $ git show
--format=raw e69d 何も表示されない
21.
おかしい $ git show
--format=raw 543b tree 543b README これの中身がe69d だという情報はどこ? というわけで表示スクリプトを作った
22.
Q&A • Q: スクリプト作らなくてもgunzipとかで解凍す
れば良いのでは? • A: zlibで圧縮されてはいるが、zipファイルとして validなフォーマットにはなっていないので解凍で きなかった。もしもっと手軽な方法があれば教え て下さい。
Jetzt herunterladen