目次
概要
表題のとおり、まずはGitの全貌をザックリ捉えましょう。
これがイメージ出来ていないと、コマンドを実行しても何が起きたのかわかりにくいと思います。
Gitってなに?
Linuxカーネルの開発者が開発した、ソースコードのバージョン管理ツールです。
Gitに関心がある時点でこの辺はご存じの方が多いと思いますが、一応書いておきます。
最近では多くのアプリケーションに変更履歴を記録する機能が実装されてきました。
しかし、Linuxカーネルのような膨大な量のソースコードの管理は容易ではありません。
これを解消する為のソリューションが Git です。
開発において、誰が、いつ、なんのために、なにをしたのかを記録し、必要ならば切り戻したり、メンバーの更新内容をレビューしたりすることが出来ます。
Gitの全貌
ザックリですが、全貌を捉える為のイメージを用意しました。
この位置関係を意識してコマンドを実行していきましょう。

ワークツリー | 自分の作業しているフォルダ(ディレクトリ)のこと |
ステージ | ワークツリーで編集した内容を置くエリアで、インデックスとも呼ばれる |
ローカルリポジトリ | ステージにあるデータを一定不変のデータとして記録する場所 |
リモートリポジトリ | コードの最終的な反映先である、GitHub等ネットワーク上にあるリポジトリ |
Gitのデータの持ち方
Gitはファイルの変更内容を都度スナップショット1として記録します。
変更のないファイルは下図のように、前のスナップショットを使いまわします。

おしまい
リモートリポジトリは経過や完成品をアップしたり、誰かの編集を取り込む時にアクセスします。
ローカルのワークツリー・ステージ・ローカルリポジトリの構造をしっかりイメージしておきましょう!

- スナップショット:ある状態をそのまま切り取ることです。Gitでは”ファイルの状態をそのまま記録し、ヘッダ情報を付与して圧縮したもの”とザックリ捉えておきましょう。 ↩︎