概要
gitは任意時点のファイルの状態を保存して時系列順に記録することで、過去の状態に遡ったり変更履歴を差分で確認できたりと色々便利なツールである。このようにファイルを管理することをバージョン管理という。
最大の特徴・利点は同じプロジェクトに対して複数人の人が別々にファイルを編集していって、互いに邪魔することなく変更内容を確認・管理しながら最終的に統合できることである。
このような特徴・利点があり、ソフトウェア開発プロジェクトではファイルの変更管理のためにgitを使っておけば間違いない。
基本概念
[1] gitでバージョン管理する対象のプロジェクトのディレクトリを作成する
project
`-- [project files]
[2] .gitディレクトリを作る。通称gitリポジトリである。
project
├── .git
`-- [project files]
[3] gitリポジトリとは、任意の時点でのプロジェクト配下のファイル・ディレクトリの状態を保存し、そのバージョン管理に必要な情報も含めて全て記録していく領域である。従って、gitリポジトリをコピーすれば、どこでもプロジェクトの各バージョンの状態を復元することができる。
[4] 以降、プロジェクトはワーキングディレクトリという領域になる。
project(working directory)
├── .git
| ↑ 変更後のファイルの状態を保存
`-- [project files] ※ファイル変更作業を行う
上図のように、ワーキングディレクトリ内で管理対象のファイル・ディレクトリの変更作業を行い、変更後の状態を(ゲームのセーブデータのように)gitリポジトリに記録する、というのがgitの基本的な作業の流れとなる。
[5] gitでは、ファイルを変更した後の状態をgitリポジトリに記録することをcommit(コミット) と言う。コミットでは、ファイルの差分ではなくその時のプロジェクトのファイル・ディレクトリ全体の状態が保存される(スナップショットという)。そのため、gitリポジトリにコミット情報があればどこでもその時のプロジェクトの状態を復元することができる。