2章基本コンセプト
前章では、Gitの基本、特徴、バージョン管理の典型的な応用例を示した。おそらく、みなさんは好奇心を刺激されるとともに、多くの疑問を感じただろう。たとえば、ローカル開発マシンでコミットするたびにGitは同じファイルのリビジョンをどのように管理しているのか、隠し.git
ディレクトリの内容は何で、どのような意味があるのか、コミットIDはどのように生成され、なぜあのようにわけのわからない値になっているのか、コミットIDの値はメモしておくべきなのかといったことだ。
Apache Subversion(SVN)やConcurrent Versions System(CVS)といったほかのバージョン管理システム(version control system:VCS)を使ったことがあれば、前章で説明したコマンドの一部はもう知っていると思っただろう。Gitは、最近のVCSが提供している操作をすべて提供し、それらと同じ機能を実現しているが、1つだけ例外がある。Gitの内部動作や原則が根本的なところで意外な形で異なることだ。
この章では、Gitのアーキテクチャの主要なコンポーネントと重要な概念を精査して、Gitがなぜ、どのように違っているのかを明らかにする。1つのリポジトリを使って、基礎と一般的な用語、Gitオブジェクト間の関係と個々のGitオブジェクトの用途を見ていく。この章で学ぶ基礎は、複数の相互接続されたリポジトリを相手にするときにも同じように当てはまる。
2.1 リポジトリ
Gitのリポジトリは、プロジェクトに含まれるファイルのリビジョンと履歴を維持、管理するために必要なすべての情報を格納するキー/バリューデータベースにすぎない。Gitリポジトリは、始まりから現在に至るプロジェクトの完全なコピーだ。しかし、ほかの大半のVCSとは異なり、Gitのリポジトリは、プロジェクトに格納されているすべてのファイルの完全な作業コピーだけでなく、作業で使うリポジトリ自体(キー/バリューデータベース)のコピーも提供する。 ...
Get 実用 Git 第3版 now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.