Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
git入門
Search
uzimaru0000
September 26, 2020
Technology
1
310
git入門
Zli × エキサイト 合同LT
https://zli.connpass.com/event/188279/
uzimaru0000
September 26, 2020
Tweet
Share
More Decks by uzimaru0000
See All by uzimaru0000
OGPを使いたい
uzimaru0000
0
160
Webフロントエンド入門
uzimaru0000
1
430
WebフロントエンジニアはOSの夢を見る
uzimaru0000
0
350
BrainFuckをつくった
uzimaru0000
0
450
Elmで作るCLI
uzimaru0000
0
130
Blogを作った話 -Zli x DeNA-
uzimaru0000
1
180
Compression Vue App
uzimaru0000
0
120
好きなライブラリ_OSS
uzimaru0000
0
220
Other Decks in Technology
See All in Technology
生成AIが変えるデータ分析の全体像
ishikawa_satoru
0
120
The Role of Developer Relations in AI Product Success.
giftojabu1
0
120
ドメイン名の終活について - JPAAWG 7th -
mikit
33
20k
安心してください、日本語使えますよ―Ubuntu日本語Remix提供休止に寄せて― 2024-11-17
nobutomurata
1
1k
20241120_JAWS_東京_ランチタイムLT#17_AWS認定全冠の先へ
tsumita
2
270
テストコード品質を高めるためにMutation Testingライブラリ・Strykerを実戦導入してみた話
ysknsid25
7
2.6k
組織成長を加速させるオンボーディングの取り組み
sudoakiy
2
140
Lambdaと地方とコミュニティ
miu_crescent
2
370
AGIについてChatGPTに聞いてみた
blueb
0
130
データプロダクトの定義からはじめる、データコントラクト駆動なデータ基盤
chanyou0311
2
310
Amazon CloudWatch Network Monitor のススメ
yuki_ink
1
210
iOSチームとAndroidチームでブランチ運用が違ったので整理してます
sansantech
PRO
0
130
Featured
See All Featured
Designing the Hi-DPI Web
ddemaree
280
34k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.3k
Rebuilding a faster, lazier Slack
samanthasiow
79
8.7k
Put a Button on it: Removing Barriers to Going Fast.
kastner
59
3.5k
YesSQL, Process and Tooling at Scale
rocio
169
14k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
10
720
Art, The Web, and Tiny UX
lynnandtonic
297
20k
Gamification - CAS2011
davidbonilla
80
5k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
38
1.8k
A better future with KSS
kneath
238
17k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
44
2.2k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
364
24k
Transcript
git入門 うじまる
自己紹介 - B4 - うじまる - Webフロントエンド - TypeScript -
Elm - 最近Rustをやってます。 - Twitter - @uzimaru0000 - GitHub - @uzimaru0000
みなさんgitは使ってますか?
使ってますね
ありがとうございました!
終わりません♂
gitの仕組み分かりますか?
gitの仕組み入門 うじまる
もくじ - gitって? - gitの仕組み - `git add` を使わないで `git
add` をしてみる
gitって?
gitって? Git(ギット[2][3][4])は、プログラムのソースコードなどの変更履歴を記録・追跡するための分散型バージョン管理システムである。 (wikipediaより) - 分散型バージョン管理システム - Linux カーネルの開発者のリーナスさんが作ったシステム
gitって? Q. 情報はどこに保存されてる? A. `.git` ディレクトリ以下
gitって? - HEAD - `git push origin HEAD` とかで参照される
- index - いわゆるstaging - objects/ - gitのobjectの保存先 - refs/ - branchとかtagsの保存先
gitって? - HEAD - `git push origin HEAD` とかで参照される
- index - いわゆるstaging - objects/ - gitのobjectの保存先 - refs/ - branchとかtagsの保存先
git-object - gitは3種類のobjectによって構成されている - commit - tree - blob -
それぞれ、commit・ディレクトリ・ファイルに対応している - sha1で固有のIDが割り当てられる - zlibで圧縮されている
git-object フォーマットは以下のような感じ - このobjectのtype - bodyのbytes数 - body(objectのtypeによって中身は変わる)
git-object - commit - 親のcommit, ルートのtree, commitをした人などの情報が記録されている - tree
- ディレクトリの情報が記録されている - 1つ以上のtreeやblobを持っている - blob - ファイルの情報が記録されている - `git add` した時点のファイルのスナップショット ※ git は 差分 ではなく ファイルの中身すべて を保存している
git-object sha1の作られ方 - objectの中身を使う
git-object 結果が違う・・・・ 原因:object fileはzlibで圧縮されている
git-object `zlib_decompress` を使ってファイルを解凍 同じ結果になった!!
git-object - sha1の値がそのままpathになる - 上2桁がディレクトリで残りがファイル名 コンテンツからsha1が生成されるので 同じ内容のものは重複しない!
HEADとrefs/ - HEADには現在のHEADのpathが書いてる - .git/refs/heads/master が今のHEAD(ブランチ)
HEADとrefs/ - HEADの値を使って `refs/` の値を見てみる
gitの仕組み
git-objectの関係性
git-objectの関係性
git-objectの関係性
git addをしてみる
gitのコマンド - git add や git commit などのコマンド - これらは「磁器コマンド」と呼ばれる
- git cat-file や git hash-object などのコマンド - これらは「配管コマンド」と呼ばれる 配管コマンドを組み合わせれば、磁器コマンド相当のことができる!! (昔はそうしていたみたい)
git addをしてみる $ git hash-object - ファイルをblobにするためのコマンド - `-w` オプションをつけることで保存もしてくれる
$ git update-index - indexをupdateしてくれる - optionがちょっと多い
git addをしてみる
DEMO
まとめ - git の仕組みは意外とシンプル - git-objectのパースと配管コマンドの実装が出来たらgitは作れる
None
ありがとうございました!