Git は、2005 年に Linus Torvalds によって作成されたバージョン管理システムです。 Git は、効率的な分散バージョン管理システムを備えており、現在最も人気のあるソース コード管理ツールの 1 つとなっています。 Git では、データの冗長性は非常に重要な機能であり、オブジェクト ストレージとハッシュ アルゴリズムを通じて実装されます。
1. オブジェクト ストレージ
Git では、データの各バージョンは「Git オブジェクト」と呼ばれるオブジェクトとして保存されます。これらのオブジェクトには、ファイル、コード、履歴などが含まれます。すべての Git オブジェクトは、「オブジェクト ライブラリ」と呼ばれる場所に保存されます。オブジェクト ライブラリには通常、BLOB オブジェクト、ツリー オブジェクト、コミット オブジェクトの 3 種類のオブジェクトが含まれています。
Blob オブジェクトは、Git の最も基本的なオブジェクト タイプであり、ファイルを表します。ファイルを編集して Git リポジトリに追加すると、Git はファイルを BLOB オブジェクトに変換し、オブジェクト ライブラリに保存します。このように、ファイルの各バージョンには、それに対応する一意の SHA-1 ハッシュ値があるため、コンテンツが変更された場合でも、新しい BLOB オブジェクトが生成されます。
ツリー オブジェクトはフォルダーとも呼ばれ、複数の BLOB オブジェクトとその他のツリー オブジェクトを含むリストです。各ツリー オブジェクトはフォルダーを表し、そのフォルダーの下にあるサブフォルダーのすべての BLOB オブジェクトとツリー オブジェクトが含まれます。このように、フォルダーの各バージョンには、それに対応する一意の SHA-1 ハッシュ値があります。
Commit オブジェクトには、作成者、タイムスタンプ、送信指示などの送信関連情報が含まれています。各コミットには、それに対応する一意の SHA-1 ハッシュがあります。コミットが行われると、Git は新しいコミット オブジェクトを作成し、現在のツリー オブジェクトをスナップショットとして使用します。このコミット オブジェクトには前のコミット オブジェクトの SHA-1 値が含まれるため、タイムラインが形成され、すべての履歴バージョンが保持されます。
2. ハッシュ アルゴリズム
Git は、データの偶発的な損失や改ざんを防ぐために SHA-1 ハッシュ アルゴリズムを使用します。 SHA-1 アルゴリズムは、任意の長さの入力データを 160 ビットのハッシュ値に変換し、いかなる場合でも一意のハッシュ値を生成する MD5 アルゴリズムに非常に似ています。
新しい BLOB オブジェクトまたはツリー オブジェクトを Git に追加すると、Git は SHA-1 アルゴリズムに基づいてそのハッシュ値を計算します。 Git はハッシュ値をファイル名として使用し、オブジェクトを「.git/objects」ディレクトリに保存します。 SHA-1 アルゴリズムは元に戻せないため、各 Git オブジェクトはそのコンテンツに密接に関連する一意の SHA-1 値を持ちます。
フォルダーまたはファイルが変更されるたびに、Git は新しいフォルダーまたはファイルの SHA-1 ハッシュ値を計算し、それを新しい BLOB オブジェクトまたはツリー オブジェクトとしてオブジェクト ライブラリに追加します。これにより、履歴バージョンの整合性とデータの冗長性が保証され、オブジェクトが誤って削除された場合でも、ハッシュ値を通じて元のオブジェクトを取得できます。
概要
Git のデータ冗長性は、オブジェクト ストレージとハッシュ アルゴリズムを通じて実現されます。オブジェクト ストレージを使用すると、Git はすべてのバージョン データを効率的かつ柔軟な方法で保存し、ハッシュ アルゴリズムを通じてオブジェクト ハッシュ値の一意性を確保できます。この方法により、Git ウェアハウス内のすべてのデータの紛失や改ざんが確実に防止され、バージョン データの整合性とセキュリティが確保されます。
以上がgit はどのようにしてデータの冗長性を確保しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。