1

git コミットには、差分ではなくすべてのリポジトリのスナップショットが含まれていることを何度も読みました。ただし、ストレージ形式 (スナップショットと差分) が他の操作にどのように影響するかはわかりません。

私にとって、ストレージオプションとしての差分とスナップショットは同等です。どちらでも同じ機能を受け取るということです。たとえば、差分を取得するためのスナップショット ストレージ オプションでは、2 つのスナップショットを比較してその差分を取得する必要があります。差分ストレージ オプションでは、この差分を取得するだけで済みます。そして、そのようなスキームはすべての操作で機能します(もう1つの例:スナップショットを使用していくつかのブランチをチェックアウトするには、スナップショットからすべてのファイルを抽出するだけで済みます。差分を使用すると、すべての差分を適用する必要があり、結果はスナップショットと同じになります)。

では、スナップショットと差分の主な違いは何ですか?

4

1 に答える 1

4

git commit がスナップショット (または完全なツリー) を参照するという事実は、概念的なデータ モデルの事実であり、基礎となるストレージの選択ではありません。

実際、通常、コミットがスナップショットとして保存されることは正しくありません。圧縮されると、コミットを構成する「ファイル」は、差分ストレージの選択と同様の方法で同様のファイルに対してデルタ圧縮されますが、git では、必ずしも同じファイルの以前のバージョンではないものに対してデルタ圧縮される場合があります。ファイル。

最初に git とそのデータ モデルの概念を学び、最初はストレージ メカニズムについて心配しないことをお勧めします。

于 2012-07-03T20:37:54.070 に答える