#はじめに
本記事ではGitの基本概念。具体的には、リポジトリ、コミット、ワークツリー、インデックスについて説明していきます。
※投稿について間違った説明、解釈をしている場合はぜひコメントお願い致します。
#そもそもGit(ギット)とは?
結論、Gitとは、ファイルの変更履歴を記録、追跡するためのバージョン管理システムです。
Gitは、「いつ、誰が、どのファイルのどの箇所を、どんなメッセージを残して変更したか」をファイルの変更履歴として残してくれます。Gitのおかげで、共同開発やファイルの変更履歴の記録などをより簡単にこなすことができるようになりました。
#リポジトリ
バージョン管理を行うには、バージョンの保存場所が必要です。
その保存先のことを”リポジトリ”と言います。リポジトリという箱の中にバージョン情報(ファイルの変更履歴)の1つ1つが保管されているイメージです。
#コミット
先ほどリポリトリは箱だ。と説明しましたが、コミットは箱の中身です。
”コミット”は1つ1つのバージョンのことを指します。また、コミットを作成することを”コミットする”と言います。
今回詳しい説明は省きますが、1つ1つのコミットには様々な情報が入っています。
主な6つを紹介します。
・リビジョン番号
・コミットした人
・コミットした日時
・コミットしたときのファイル内容の差分
・コミットメッセージ
・親コミット(1つ前のコミット)のリビジョン番号
#ワークツリーとインデックス
”ワークツリー”は,Gitでバージョン管理されているフォルダの中身を指します。
はじめに、ファイルに変更が加えられるとまずはワークツリーに変更が反映されます。この段階では、前回のコミットされたフォルダと比較して、前回との変更箇所がわかるだけです。
次に、ワークツリーから次のコミットに含めたいファイルの変更箇所を選択します。このことを”ステージする”と言います。
そして、ステージされたファイルの変更箇所は”インデックス”に反映されます。
最後にインデックスへステージされた変更箇所のみをコミットします。
”インデッックス”はファイルの変更からコミットまでの中間地点的な役割を果たしています。
ではなぜ、インデックスが必要になるのかと言うと、インデックスはコミットを行う前に、ワークツリーの変更箇所の中から関連性のある変更のまとまりを選択してくれるからです。