gitの勉強のために色々調べてメモしたので大開放。ソースは主に公式リファレンス。 そもそもgitとは? 分散バージョン管理システム(DVCS, Distributed Version Control System)の一種で、全てのデータをスナップショットのようなものとしてローカルに持つ。それにより、サーバ上のデータがクラッシュした場合もローカルリポジトリから復元することができる。また、作業時にサーバ接続が必要ないため、高速で安定した開発を行うことができる。 gitはコミット毎にファイル状態のスナップショットへの参照を格納する。ファイルに変更がない場合はそれ以前のスナップショットを直接参照する。 gitはファイル単位ではなく、全ファイルのコンテンツを追跡する。コミットには各ファイルの変更内容やファイル名、リンクなどなどが格納される。 gitはハッシュ値でコミットを管理し、それは完全性を持つ。