git 仕組み 入門
DESCRIPTION
岡山Git勉強会で Git の Object について話した。TRANSCRIPT
![Page 1: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/1.jpg)
Git 仕組み 入門
2013 02 23岡山 Git 勉強会
![Page 2: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/2.jpg)
自己紹介
Twitter eielh
Githubeiel
火村 智彦EmacsHaskellRubyGentoo弐寺http://eiel.info/
![Page 3: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/3.jpg)
目的
![Page 4: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/4.jpg)
目的
![Page 5: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/5.jpg)
目的
![Page 6: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/6.jpg)
目的
• Git の仕組みを
![Page 7: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/7.jpg)
目的
• Git の仕組みを• なんとなく理解する
![Page 8: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/8.jpg)
目的
• Git の仕組みを• なんとなく理解する
• 特に
![Page 9: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/9.jpg)
目的
• Git の仕組みを• なんとなく理解する
• 特に• Git の Object について
![Page 10: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/10.jpg)
中身を知ると
![Page 11: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/11.jpg)
中身を知ると
![Page 12: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/12.jpg)
中身を知ると
• 応用力がつく
![Page 13: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/13.jpg)
中身を知ると
• 応用力がつく• トラブルに強くなる
![Page 14: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/14.jpg)
対象者
![Page 15: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/15.jpg)
対象者
![Page 16: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/16.jpg)
対象者
• 一応 Git を利用してる人
![Page 17: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/17.jpg)
参考文献
![Page 18: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/18.jpg)
参考文献
![Page 19: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/19.jpg)
参考文献
• Pro git 9章
![Page 20: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/20.jpg)
参考文献
• Pro git 9章• http://git-scm.com/book/ja/Git%E3%81%AE%E5%86%85%E5%81%B4
![Page 21: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/21.jpg)
参考文献
• Pro git 9章• http://git-scm.com/book/ja/Git%E3%81%AE%E5%86%85%E5%81%B4
• man 7 gittutorial-2
![Page 22: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/22.jpg)
参考文献
• Pro git 9章• http://git-scm.com/book/ja/Git%E3%81%AE%E5%86%85%E5%81%B4
• man 7 gittutorial-2• http://cdn8.atwikiimg.com/git_jp/pub/git-manual-jp/Documentation/gittutorial-2.html
![Page 23: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/23.jpg)
アジェンダ
![Page 24: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/24.jpg)
アジェンダ
![Page 25: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/25.jpg)
アジェンダ
• そもそも Git ってなんだっけ
![Page 26: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/26.jpg)
アジェンダ
• そもそも Git ってなんだっけ• Git Object
![Page 27: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/27.jpg)
アジェンダ
• そもそも Git ってなんだっけ• Git Object• 考えてみよう - 他の機能とか
![Page 28: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/28.jpg)
そもそも Git ってなんだっけ
![Page 29: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/29.jpg)
バージョン管理システム
![Page 30: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/30.jpg)
バージョン管理システム
![Page 31: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/31.jpg)
バージョン管理システム
• 履歴が辿れる
![Page 32: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/32.jpg)
バージョン管理システム
• 履歴が辿れる
• 変更内容を確認できる
![Page 33: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/33.jpg)
バージョン管理システム
• 履歴が辿れる
• 変更内容を確認できる
• 以前の状態に戻れる
![Page 34: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/34.jpg)
履歴が辿れる
• いつ、どうして変更したんだっけ
![Page 35: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/35.jpg)
変更内容を確認できる
• どんな変更をしたんだっけ
![Page 36: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/36.jpg)
以前の状態に戻れる
• やっぱり前のほうが…
![Page 37: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/37.jpg)
Git はどのように実現したか
![Page 38: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/38.jpg)
Git はどのように実現したか
![Page 39: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/39.jpg)
Git はどのように実現したか
• 履歴にすべてを保存した
![Page 40: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/40.jpg)
Git はどのように実現したか
• 履歴にすべてを保存した• ファイルの内容
![Page 41: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/41.jpg)
Git はどのように実現したか
• 履歴にすべてを保存した• ファイルの内容
• ディレクトリの構造
![Page 42: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/42.jpg)
Git はどのように実現したか
• 履歴にすべてを保存した• ファイルの内容
• ディレクトリの構造
• ファイルの一覧
![Page 43: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/43.jpg)
Git はどのように実現したか
• 履歴にすべてを保存した• ファイルの内容
• ディレクトリの構造
• ファイルの一覧
• 履歴の情報
![Page 44: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/44.jpg)
Git はどのように実現したか
• 履歴にすべてを保存した• ファイルの内容
• ディレクトリの構造
• ファイルの一覧
• 履歴の情報
![Page 45: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/45.jpg)
Git はどのように実現したか
• 履歴にすべてを保存した• ファイルの内容
• ディレクトリの構造
• ファイルの一覧
• 履歴の情報
復元できる
![Page 46: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/46.jpg)
履歴の情報
![Page 47: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/47.jpg)
履歴の情報
![Page 48: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/48.jpg)
履歴の情報
• 変更した人、時間
![Page 49: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/49.jpg)
履歴の情報
• 変更した人、時間• ひとつ前の履歴
![Page 50: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/50.jpg)
履歴の情報
• 変更した人、時間• ひとつ前の履歴• 変更した理由
![Page 51: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/51.jpg)
履歴の情報
• 変更した人、時間• ひとつ前の履歴• 変更した理由
![Page 52: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/52.jpg)
履歴の情報
• 変更した人、時間• ひとつ前の履歴• 変更した理由
履歴を辿れる
![Page 53: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/53.jpg)
Git はどのように実現したか履歴
変更した理由 変更した人、時間 ディレクトリ 前の履歴
履歴 変更した理由 変更した人、時間 ディレクトリ 前の履歴
ディレクトリREADMElib
内容
ディレクトリhoge.rb 内容
ディレクトリREADMElib
![Page 54: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/54.jpg)
まとめ
![Page 55: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/55.jpg)
まとめ
![Page 56: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/56.jpg)
まとめ
• Git はバージョン管理システム
![Page 57: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/57.jpg)
まとめ
• Git はバージョン管理システム• バージョン管理システムを作るには
![Page 58: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/58.jpg)
まとめ
• Git はバージョン管理システム• バージョン管理システムを作るには• ファイル
![Page 59: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/59.jpg)
まとめ
• Git はバージョン管理システム• バージョン管理システムを作るには• ファイル
• ディレクトリ
![Page 60: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/60.jpg)
まとめ
• Git はバージョン管理システム• バージョン管理システムを作るには• ファイル
• ディレクトリ
• 履歴
![Page 61: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/61.jpg)
Git Object
![Page 62: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/62.jpg)
Git Object
![Page 63: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/63.jpg)
Git Object
![Page 64: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/64.jpg)
Git Object
• Git のデータベース
![Page 65: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/65.jpg)
Git Object の種類
![Page 66: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/66.jpg)
Git Object の種類
![Page 67: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/67.jpg)
Git Object の種類
• blob
![Page 68: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/68.jpg)
Git Object の種類
• blob• tree
![Page 69: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/69.jpg)
Git Object の種類
• blob• tree• commit
![Page 70: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/70.jpg)
Git Object の種類
• blob• tree• commit• tag
![Page 71: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/71.jpg)
Git Object の種類
• blob• tree• commit• tag• 今回は省略
![Page 72: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/72.jpg)
blob
![Page 73: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/73.jpg)
blob
![Page 74: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/74.jpg)
blob
• ファイルの内容
![Page 75: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/75.jpg)
blob
• ファイルの内容• それ以上でもそれ以下でもない
![Page 76: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/76.jpg)
tree
![Page 77: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/77.jpg)
tree
![Page 78: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/78.jpg)
tree
• ディレクトリ構造
![Page 79: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/79.jpg)
tree
• ディレクトリ構造• blob と treeの一覧
![Page 80: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/80.jpg)
commit
![Page 81: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/81.jpg)
commit
![Page 82: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/82.jpg)
commit
• 履歴そのもの
![Page 83: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/83.jpg)
commit
• 履歴そのもの• ひとつ前の commit を知ってる
![Page 84: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/84.jpg)
commit
• 履歴そのもの• ひとつ前の commit を知ってる• 誰がいつ作ったものか知ってる
![Page 85: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/85.jpg)
commit
• 履歴そのもの• ひとつ前の commit を知ってる• 誰がいつ作ったものか知ってる• ルートディレクトリを知ってる
![Page 86: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/86.jpg)
Object のフォーマット
![Page 87: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/87.jpg)
名前
![Page 88: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/88.jpg)
名前
![Page 89: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/89.jpg)
名前
• 中身を SHA-1 でハッシュ化したもの
![Page 90: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/90.jpg)
中身
![Page 91: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/91.jpg)
中身
![Page 92: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/92.jpg)
中身
• ヘッダ
![Page 93: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/93.jpg)
中身
• ヘッダ• オブジェクトの種類
![Page 94: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/94.jpg)
中身
• ヘッダ• オブジェクトの種類
• ファイルサイズ
![Page 95: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/95.jpg)
中身
• ヘッダ• オブジェクトの種類
• ファイルサイズ
• ボディ
![Page 96: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/96.jpg)
中身
• ヘッダ• オブジェクトの種類
• ファイルサイズ
• ボディ• 内容
![Page 97: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/97.jpg)
中身
• ヘッダ• オブジェクトの種類
• ファイルサイズ
• ボディ• 内容
• ヘッダとボディの区切り NUL
![Page 98: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/98.jpg)
中身
• ヘッダとボディ が zlib で圧縮
![Page 99: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/99.jpg)
オブジェクトの保存場所
![Page 100: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/100.jpg)
オブジェクトの保存場所
![Page 101: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/101.jpg)
オブジェクトの保存場所
• .git/objects
![Page 102: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/102.jpg)
具体的に
![Page 104: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/104.jpg)
コマンドとか資料は以下に用意してます。https://github.com/eiel/okagit-object
![Page 105: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/105.jpg)
ファイル構成
$ tree.├── README.md├── doc│ └── commands.org└── object.org
1 directory, 3 files
![Page 106: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/106.jpg)
オブジェクトの保存場所
• .git/objects
![Page 107: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/107.jpg)
.git/objects
$ tree .git/objects.git/objects/├── info└── pack ├── pack-68c839f0766ad945f74b6bc1785d7b952c07996b.idx └── pack-68c839f0766ad945f74b6bc1785d7b952c07996b.pack
2 directories, 2 files
![Page 108: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/108.jpg)
pack はオブジェクトをまとめたもの
![Page 109: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/109.jpg)
今回は無視します
![Page 110: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/110.jpg)
.git/objects
$ tree .git/objects.git/objects/├── info└── pack ├── pack-68c839f0766ad945f74b6bc1785d7b952c07996b.idx └── pack-68c839f0766ad945f74b6bc1785d7b952c07996b.pack
2 directories, 2 files
![Page 111: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/111.jpg)
とりあえずコミットしてみる
![Page 112: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/112.jpg)
とりあえずコミットしてみる
$ echo "READMEを上書き" > README.md $ git commit -a -m 'READEMを上書きしました'$ cat README.mdREADMEを上書き
![Page 113: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/113.jpg)
.git/objects
$ tree .git/objects/.git/objects/├── 04│ └── fb0db5f68f3e917ba90aacb09db78199bda6a7├── a0│ └── d74d48d61f95a874e30f8fb71bbd68506d0f6e├── fe│ └── ba9138249c3c6fcd9435fc38a6a29193abb76c├── info└── pack ├── pack-68c839f0766ad945f74b6bc1785d7b952c07996b.idx └── pack-68c839f0766ad945f74b6bc1785d7b952c07996b.pack
5 directories, 5 files
![Page 114: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/114.jpg)
オブジェクトが3つできました
![Page 115: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/115.jpg)
04fb0db5f68f3e917ba90aacb09db78199bda6a7 - commit 人によって違う
a0d74d48d61f95a874e30f8fb71bbd68506d0f6e - blob README
feba9138249c3c6fcd9435fc38a6a29193abb76c - tree
![Page 116: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/116.jpg)
ファイルの中身を見てみよう
![Page 117: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/117.jpg)
zlib ライブラリで圧縮されてるので…
![Page 118: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/118.jpg)
ruby -rzlib -e 'puts Zlib.inflate(ARGF.read)'
![Page 119: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/119.jpg)
展開して中身をみる
$ cat .git/objects/a0/d74d48d61f95a874e30f8fb71bbd68506d0f6e | \ ruby -rzlib -e 'puts Zlib.inflate(ARGF.read)'blob 19READMEを上書き
![Page 120: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/120.jpg)
ただのテキストデータ
![Page 121: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/121.jpg)
中身
• ヘッダ• オブジェクトの種類
• ファイルサイズ
• ボディ• 内容
• ヘッダとボディの区切り NUL
![Page 122: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/122.jpg)
blob 19READMEを上書き
ヘッダ ボディ
![Page 123: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/123.jpg)
中身
• ヘッダ• オブジェクトの種類
• ファイルサイズ
• ボディ• 内容
• ヘッダとボディの区切り NUL
![Page 124: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/124.jpg)
blob 19READMEを上書き
種類 サイズ
![Page 125: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/125.jpg)
中身
• ヘッダ• オブジェクトの種類
• ファイルサイズ
• ボディ• 内容
• ヘッダとボディの区切り NUL
![Page 126: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/126.jpg)
区切りは NUL
$ cat .git/objects/a0/d74d48d61f95a874e30f8fb71bbd68506d0f6e | \ ruby -rzlib -e 'puts Zlib.inflate(ARGF.read)' | \ od -c0000000 b l o b 1 9 \0 R E A D M E 2020000020 222 ? 212 233 ? 201 215 \n0000033
![Page 127: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/127.jpg)
区切りは NUL
$ cat .git/objects/a0/d74d48d61f95a874e30f8fb71bbd68506d0f6e | \ ruby -rzlib -e 'puts Zlib.inflate(ARGF.read)' | \ od -c0000000 b l o b 1 9 \0 R E A D M E 2020000020 222 ? 212 233 ? 201 215 \n0000033
![Page 128: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/128.jpg)
名前
• 中身を SHA-1 でハッシュ化したもの
![Page 129: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/129.jpg)
$ cat .git/objects/a0/d74d48d61f95a874e30f8fb71bbd68506d0f6e | \ ruby -rzlib -e 'puts Zlib.inflate(ARGF.read)' | \ sha1sum a0d74d48d61f95a874e30f8fb71bbd68506d0f6e
名前は 中身を SHA でハッシュしたもの
![Page 130: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/130.jpg)
$ cat .git/objects/a0/d74d48d61f95a874e30f8fb71bbd68506d0f6e | \ ruby -rzlib -e 'puts Zlib.inflate(ARGF.read)' | \ sha1sum a0d74d48d61f95a874e30f8fb71bbd68506d0f6e
名前は 中身を SHA でハッシュしたもの
![Page 131: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/131.jpg)
$ cat .git/objects/a0/d74d48d61f95a874e30f8fb71bbd68506d0f6e | \ ruby -rzlib -e 'puts Zlib.inflate(ARGF.read)' | \ sha1sum a0d74d48d61f95a874e30f8fb71bbd68506d0f6e
名前は 中身を SHA でハッシュしたもの
![Page 132: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/132.jpg)
$ cat .git/objects/a0/d74d48d61f95a874e30f8fb71bbd68506d0f6e | \ ruby -rzlib -e 'puts Zlib.inflate(ARGF.read)' | \ sha1sum a0d74d48d61f95a874e30f8fb71bbd68506d0f6e
名前は 中身を SHA でハッシュしたもの
一致
![Page 133: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/133.jpg)
他の中身を見る方法
$ git cat-file -t a0d74blob
$ git cat-file -s a0d7419
$ git cat-file -p a0d74READMEを上書き
$ git show a0d74READMEを上書き
![Page 134: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/134.jpg)
他の中身を見る方法
$ git cat-file -t a0d74blob
$ git cat-file -s a0d7419
$ git cat-file -p a0d74READMEを上書き
$ git show a0d74READMEを上書き
種類
![Page 135: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/135.jpg)
他の中身を見る方法
$ git cat-file -t a0d74blob
$ git cat-file -s a0d7419
$ git cat-file -p a0d74READMEを上書き
$ git show a0d74READMEを上書き
種類
サイズ
![Page 136: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/136.jpg)
他の中身を見る方法
$ git cat-file -t a0d74blob
$ git cat-file -s a0d7419
$ git cat-file -p a0d74READMEを上書き
$ git show a0d74READMEを上書き
種類
サイズ
中身
![Page 137: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/137.jpg)
他の中身を見る方法
$ git cat-file -t a0d74blob
$ git cat-file -s a0d7419
$ git cat-file -p a0d74READMEを上書き
$ git show a0d74READMEを上書き
種類
サイズ
中身
整形された情報
![Page 138: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/138.jpg)
補足パックされてるオブジェクトの一覧
![Page 139: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/139.jpg)
オブジェクトを全部見てみる
$ git rev-list --all --objects04fb0db5f68f3e917ba90aacb09db78199bda6a77dca985cea0d6e31591b46fe2610d5538dce466d26d033a78bb394bb0e86f8fb27a024f1df165300e4ffe1da5832106dd1a173db4854a1f18d54f0e8feba9138249c3c6fcd9435fc38a6a29193abb76c a0d74d48d61f95a874e30f8fb71bbd68506d0f6e README.md7ba05afba1830003b1c68c63f95f08440ee7a355 doc2784fbf7b28eeebf2676ff242e6490247e5477d6 doc/commands.orge2c1d9639a78a7eeb2432931f3fc78ffabf6aed9 object.org3b146a001783e7e5333f6da0560cf569c73da9b2 bbc83e8056103c2270c974e1abe2b79ac518cb6a README.md488d7f8b03c0874df7e9829cfa96a318fe4a4248
![Page 140: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/140.jpg)
オブジェクトの詳細
![Page 141: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/141.jpg)
commit
![Page 142: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/142.jpg)
ふたつ前のcommit をみてみます
![Page 143: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/143.jpg)
ふたつ前のcommit
$ git cat-file -p 7dca985cea0d6e31591b46fe2610d5538dce466dtree 3b146a001783e7e5333f6da0560cf569c73da9b2parent 26d033a78bb394bb0e86f8fb27a024f1df165300author Tomohiko Himura <[email protected]> 1361346494 +0900committer Tomohiko Himura <[email protected]> 1361347251 +0900
三番目のコミット
![Page 144: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/144.jpg)
commit
• 履歴そのもの• ひとつ前の commit を知ってる• 誰がいつ作ったものか知ってる• ルートディレクトリを知ってる
![Page 145: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/145.jpg)
ふたつ前のcommit
$ git cat-file -p 7dca985cea0d6e31591b46fe2610d5538dce466dtree 3b146a001783e7e5333f6da0560cf569c73da9b2parent 26d033a78bb394bb0e86f8fb27a024f1df165300author Tomohiko Himura <[email protected]> 1361346494 +0900committer Tomohiko Himura <[email protected]> 1361347251 +0900
三番目のコミット
![Page 146: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/146.jpg)
commit
• 履歴そのもの• ひとつ前の commit を知ってる• 誰がいつ作ったものか知ってる• ルートディレクトリを知ってる
![Page 147: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/147.jpg)
$ git cat-file -p 7dca985cea0d6e31591b46fe2610d5538dce466dtree 3b146a001783e7e5333f6da0560cf569c73da9b2parent 26d033a78bb394bb0e86f8fb27a024f1df165300author Tomohiko Himura <[email protected]> 1361346494 +0900committer Tomohiko Himura <[email protected]> 1361347251 +0900
三番目のコミット
ふたつ前のcommit
![Page 148: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/148.jpg)
commit
• 履歴そのもの• ひとつ前の commit を知ってる• 誰がいつ作ったものか知ってる• ルートディレクトリを知ってる
![Page 149: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/149.jpg)
$ git cat-file -p 7dca985cea0d6e31591b46fe2610d5538dce466dtree 3b146a001783e7e5333f6da0560cf569c73da9b2parent 26d033a78bb394bb0e86f8fb27a024f1df165300author Tomohiko Himura <[email protected]> 1361346494 +0900committer Tomohiko Himura <[email protected]> 1361347251 +0900
三番目のコミット
ふたつ前のcommit
![Page 150: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/150.jpg)
tree
![Page 151: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/151.jpg)
tree
$ git cat-file -p feba913100644 blob a0d74d48d61f95a874e30f8fb71bbd68506d0f6e README.md040000 tree 7ba05afba1830003b1c68c63f95f08440ee7a355 doc100644 blob e2c1d9639a78a7eeb2432931f3fc78ffabf6aed9 object.org
![Page 152: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/152.jpg)
mode 種類 sha ファイル名
![Page 153: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/153.jpg)
tree
$ git cat-file -p feba913100644 blob a0d74d48d61f95a874e30f8fb71bbd68506d0f6e README.md040000 tree 7ba05afba1830003b1c68c63f95f08440ee7a355 doc100644 blob e2c1d9639a78a7eeb2432931f3fc78ffabf6aed9 object.org
mode種類
shaファイル名
![Page 154: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/154.jpg)
ファイル構成
$ tree.├── README.md├── doc│ └── commands.org└── object.org
1 directory, 3 files
![Page 155: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/155.jpg)
tree
$ git cat-file -p feba913100644 blob a0d74d48d61f95a874e30f8fb71bbd68506d0f6e README.md040000 tree 7ba05afba1830003b1c68c63f95f08440ee7a355 doc100644 blob e2c1d9639a78a7eeb2432931f3fc78ffabf6aed9 object.org
![Page 156: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/156.jpg)
ファイル構成
$ tree.├── README.md├── doc│ └── commands.org└── object.org
1 directory, 3 files
![Page 157: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/157.jpg)
$ git cat-file -p feba913100644 blob a0d74d48d61f95a874e30f8fb71bbd68506d0f6e README.md040000 tree 7ba05afba1830003b1c68c63f95f08440ee7a355 doc100644 blob e2c1d9639a78a7eeb2432931f3fc78ffabf6aed9 object.org
tree
![Page 158: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/158.jpg)
mode についてはman 2 statst_mode で検索
![Page 159: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/159.jpg)
blob
![Page 160: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/160.jpg)
blob は もう見たからいいや
![Page 161: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/161.jpg)
まとめ
![Page 162: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/162.jpg)
まとめ
![Page 163: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/163.jpg)
まとめ
• Git は バージョン管理システム
![Page 164: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/164.jpg)
まとめ
• Git は バージョン管理システム• バージョン管理システムを作るには
![Page 165: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/165.jpg)
まとめ
• Git は バージョン管理システム• バージョン管理システムを作るには• ファイル - blob
![Page 166: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/166.jpg)
まとめ
• Git は バージョン管理システム• バージョン管理システムを作るには• ファイル - blob
• ディレクトリ - tree
![Page 167: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/167.jpg)
まとめ
• Git は バージョン管理システム• バージョン管理システムを作るには• ファイル - blob
• ディレクトリ - tree
• 履歴 - commit
![Page 168: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/168.jpg)
考えてみよう
![Page 169: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/169.jpg)
Git の 機能について実装方法を想像してみよう
![Page 170: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/170.jpg)
答えはかかないけど
![Page 171: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/171.jpg)
前の状態にもどす
![Page 172: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/172.jpg)
差分をとる
![Page 173: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/173.jpg)
ブランチ
![Page 174: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/174.jpg)
git add しとけば復元できるかも
![Page 175: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/175.jpg)
ファイルの移動の検知
![Page 176: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/176.jpg)
git clone とか fetch
![Page 177: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/177.jpg)
rebase したりコミットログをかきかえるとコミットの sha が変わる
![Page 178: Git 仕組み 入門](https://reader033.vdocuments.mx/reader033/viewer/2022042521/555e8038d8b42a41328b50ed/html5/thumbnails/178.jpg)
ご清聴ありがとうございます