Skip to content

Instantly share code, notes, and snippets.

@kkismd
Last active August 29, 2015 13:56
Show Gist options
  • Save kkismd/8857627 to your computer and use it in GitHub Desktop.
Save kkismd/8857627 to your computer and use it in GitHub Desktop.

Gitの中身を説明してみる

  1. Gitではソースコードのツリー構造をグラフデータベースで管理している

Git用語 ファイルシステム graph用語
blob ファイル内容 エッジ
tree ディレクトリ ノード
  1. Gitではバージョンもグラフデータベースで管理している

Git用語 一般的なVCS用語 graph用語
commit リビジョン エッジ
parent 履歴(?) ノード

SVNなどではシーケンスナンバーで識別されるバージョン間のつながりを、commit同士の親子関係という有向グラフで管理している

commitオブジェクトは、ソースコードのスナップショットのRootとなるtreeオブジェクトへのノードをひとつ持つ

  1. git commitによって行われる操作

  1. ソースコードの現在の状態を、スナップショットとしてグラフデータベースに記録する

  2. 今回のコミットを示すcommitオブジェクトを作成する

  3. そのオブジェクトに…

  4. スナップショットのRootへのノードを持たせる

  5. 一つ前のcommitオブジェクトへのノードを持たせる

  6. 現在のブランチのHEADを、今作ったcommitに書き換える

  • ブランチとは、任意の名前を持ち、任意のcommitオブジェクトを指すノードである
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment