kledgeb UbuntuやLinuxの最新情報を紹介

Ubuntu Git その4 - スナップショットとは・データはチェックサムで管理される

スナップショットとは

  「git」の主要な機能の一つに、ファイルの変更履歴管理があります。
  「スナップショット」は、ファイルの変更履歴管理で使用する仕組みです。


  スナップショット

    「Git」では、変更されたファイルをデータベースに保存する際、「Git」が管理しているすべてのファイル及びファイルの情報を記録し、データベースに保存します。
    この記録のことを「スナップショット」と言います。

    「スナップショット」により、以前のファイルを取り出したり変更点を調べるなど、過去の作業を抽出できるようになります。
 

  デジカメに置き換えてみる

    デジカメに置き換えると、デジカメで撮影した写真が「スナップショット」です。
    デジカメで同じ外の風景を撮影しても、時間の経過とともに風景が変化します。


    もし1時間前に撮影した写真や、5つ前に撮影した写真が見たければ、過去の写真を探すことになります。
    写真にはExifに撮影日時や撮影者など、様々な情報が含まれています。
    それらの情報から見たい写真を探し出します。

  スナップショットも同様

    「スナップショット」も同様に、ユーザーがプロジェクトで使用するファイルを編集すれば、ファイルの中身は変化していきます。
    ユーザーはファイルの編集が一段落ついたら、「スナップショット」を作成しデータベースに保存します。

    この「スナップショット」には、作成日時や作成者など様々な情報が含まれています。
    例えば、昨日変更したファイルを取得したければ、昨日作成した「スナップショット」を探します。


    それらの情報から「スナップショット」を探し出しファイルを展開すれば、「スナップショット」作成時のファイル群が取得できます。

    「スナップショット」には、以下のデータが含まれています。

  • スナップショットの情報(メタデータ)
  • スナップショット作成時のファイル群

    デジカメの例で言えば、「スナップショット」の作成は風景を撮影する行為です。
    「スナップショットの情報」は、撮影した写真に含まれるExifの情報です。
    「スナップショット作成時のファイル群」は、撮影した写真です。

    「スナップショット」の作成は、プロジェクトで使用するファイル群のバックアップと捉えても良いです。

  変更されていないファイルも記録される

    この「スナップショット」には、「スナップショット」作成時のすべてのファイルが記録されるため、変更されていないファイルも記録されます。

    変更されていないファイルもそのまま「スナップショット」に記録してしまうと、重複してファイルを記録することになり、大変な容量になります。

    例えば100MBの変更されないファイルがあるとすると、「スナップショット」を作成するたびに、100MBのファイルも「スナップショット」に記録されます。
    このままでは「スナップショット」の容量が増えいく一方です。

    「Git」では、変更されていないファイルはそのまま記録せず、代わりに以前のバージョンを参照する情報を記録します。
    そのため、変更されていないファイルが重複して記録されることはありません。


  スナップショットの例

    スナップショットの例です。
    「Git」で管理しているファイルが3つあるとします。


    赤色のファイルが、内容を編集したファイルです。
    青色のファイルは、以前のバージョンを参照する情報です。

スナップショット
(バージョン)
ファイル1 ファイル2 ファイル3 操作内容
1.0 ファイル1 ファイル2 ファイル3 最初のバージョン
2.0 ファイル1 ファイル2への参照 ファイル3への参照 ファイル1を変更
3.0 ファイル1への参照 ファイル2への参照 ファイル3 ファイル3を変更

    例えば、一度も変更されていない「ファイル2」は、バージョン1.0の「ファイル2」を参照する情報が「スナップショット」に記録されます。

データはチェックサムで管理される

  「Git」では、データベースに保存するデータにチェックサムを生成します。

  プロジェクトで使用するファイル群もデータベースに保存されるため、これらのファイルにもチェックサムが生成されます。

  チェックサムは、データベースに保存するファイルの中身やフォルダー構造からチェックサムが生成され、チェックサムの情報を元に管理が行われます。

  チェックサムはデータの識別子

    一般的にチェックサムというと、データが破損していないか破損を検出する仕組みでよく利用されます。

    「Git」ではデータの破損に加え、データを一意に識別する識別子としても利用します。
    この識別子は、ユーザーがデータを操作する際に必要になることもあります。

    従ってこのチェックサムには、データの破損チェック以上の意味があります。

  直接編集できない

    チェックサムの情報を元に管理を行うため、「Git」のデータベースに格納しているプロジェクトのフォルダー構造やファイルの中身を直接編集することはできません。
    ファイル名も変更されるため、直接ファイルを特定することもできません。


    編集を行うには、データベースからプロジェクトのファイルを取り出す必要があります。


    これらの操作は、「Git」を経由して行います。

  整合性のチェック

    チェックサムにより、ファイルが破損していないか、情報が欠損していないかチェックが行われ、ファイルの破損を検出することができます。


  SHA-1

    チェックサムの計算に「SHA-1」ハッシュ関数が使用されます。
    フォルダー構造やファイルの中身から、チェックサムが計算されます。

    「SHA-1」は、40文字の文字列で構成されます。
 
    例:5a2938398124652417e79e68edd97b3f10669d6a

    「git」からデータに対して直接操作を行う際、このチェックサムが各々のデータを識別する識別子になります。
    この識別子は重複しません。

    またこの識別子により、どのデータに対して操作を行うのか、操作対象の指定を行うことができます。

    もちろん、より分かりやすい方法でデータを指定することもできます。


Git
スポンサー
コメント
コメントポリシー
コメントをする前に UbuntuのCode of Conduct(CoC/行動規範) を確認し、CoCに沿ったコメントをお願いします。
コメントの使い方は、コメントの使い方を参照してください。
同一カテゴリーの記事
SNS
人気の記事
  • Ubuntu 26.04 その68 - Ubuntu 26.04.1 LTS がリリースされました・ディスクイメージのダウンロード
    Ubuntu 26.04.1 LTS リリース 2026年8月27日、Ubuntu 26.04.1 LTS がリリースされました。
  • Ubuntu 26.04 その42 - Ubuntu 26.04.1 LTS のリリーススケジュール
    Ubuntu 26.04.1 LTSのリリーススケジュール Ubuntu 26.04.1 LTS のリリーススケジュールを紹介します。
  • Linux その426 - GNOME 向けアプリとアップデートの紹介・AI アシスタントアプリやメールスイートなど
    GNOME 向けアプリとアップデートの紹介 GNOME 向けアプリとアップデートの紹介です。
  • Linux その429 - GNOME 向けアプリとアップデートの紹介・ RSS リーダーのインポート機能や映画マトリックスのデスクトップ効果など
    GNOME 向けアプリとアップデートの紹介 GNOME 向けアプリとアップデートの紹介です。
  • Ubuntu 18.04 その195 - PolicyKitにクラッシュや権限の昇格など複数の脆弱性・今すぐアップデートを
    PolicyKitの脆弱性 2018年7月16日、クラッシュや権限の昇格など複数の脆弱性に対応した「PolicyKit」がリリースされました。
  • Ubuntu 26.10 その24 - Ubuntu 26.10 の公式壁紙と壁紙コンペの結果発表
    Ubuntu 26.10 の公式壁紙と壁紙コンペの結果発表 Ubuntu 26.10 の公式壁紙と壁紙コンペの結果が発表されました。
  • Linux その428 - KDE Plasma で実装予定の新機能や改善・マウスの中央ボタンの機能改善やリモートデスクトップの改善など
    KDE Plasma で実装予定の新機能や改善 KDE Plasma で実装予定の新機能や改善を紹介します。
  • Linux その425 - KDE Plasma で実装予定の新機能や改善・Union テーマシステムの改良やクリップボードマネージャーの改善など
    KDE Plasma で実装予定の新機能や改善 KDE Plasma で実装予定の新機能や改善を紹介します。
  • Linux Mint その292 - Linux kernel 7.0 採用の Linux Mint 22.3 リリース・システム管理ツールにカーネル管理機能追加など
    Linux Mint 月刊ニュース Linux Mint 開発チームは Linux Mint 月刊ニュースにて、Linux Mint の開発状況や取り組みを紹介しています。
  • Ubuntu 26.10 その23 - x86-64-v3 に対応したデイリービルドのディスクイメージが利用可能に
    x86-64-v3 に対応したデイリービルドのディスクイメージが利用可能に x86-64-v3 に対応した Ubuntu Desktop 26.10 のデイリービルドのディスクイメージが利用可能になりました。
記事のピックアップ
オプション