# Gitでのバージョン管理の流れ

実際のGitでのバージョン管理の流れを説明していきます。

例えば、下図のように`a.html`、`b.html`、`c.html`を作成して、変更分をリポジトリに保存する際には、

まずは、`git add .`というコマンドを叩いて、**stagingエリア**に変更分を追加します。

**staging**エリアというのは、リポジトリに変更分を保存する前に、今回の変更分が正しいかチェックする場です。

**stagingエリア**にて、変更分が正しい場合は、`git commit`コマンドにて、変更分を**リポジトリ**に保存します。

保存の形式に関してですが、**スナップショット**にて保存されます。

**スナップショット**とは、**ファイルの状態を丸ごと保存すること**を指します。

下図の場合は、`a.html`、`b.html`、`c.html`の各ファイルが**スナップショット**として保存されます。

<figure><img src="https://1869761657-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcUBbYqol4PMzZJggiMqV%2Fuploads%2FP6nY91ZENTle8Rq2PEgr%2F%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202023-11-24%2019.46.31.png?alt=media&#x26;token=fd147cae-72a8-42ea-a230-269b155e83d1" alt=""><figcaption></figcaption></figure>

次に、b.htmlを編集して、git add、git commitした場合は、`b.html`のみスナップショットが保存され、`a.html`と`c.html`はリポジトリに保存されているものを使い回す（リンクを貼って、参照している）ようになっています。

<figure><img src="https://1869761657-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcUBbYqol4PMzZJggiMqV%2Fuploads%2Fzup0Puhd5BI3uryznq48%2F%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202023-11-25%208.37.27.png?alt=media&#x26;token=8acf5629-42bb-4da4-a210-07c415ed0d6c" alt=""><figcaption></figcaption></figure>

git commitした際には、以下の情報が保存されます。

* ID
* メッセージ（編集した意図）
* 日時
* 編集者
* スナップショット
