はじめに
ローカルリポジトリがコミットされる際にたたいているコマンドがそれぞれ何を意味しているのか、よく分からずに使っている部分があったので、復習も兼ねて記事を書きました。
ローカルリポジトリがコミットされるまで
ローカルリポジトリをコミットし、ファイルを保存するためには
- ワークツリー
- ステージングエリア
- Gitディレクトリ
と呼ばれる3つの場所を経由する必要があります。
これらは全てローカルリポジトリ内に存在しています!
フォルダをGitの管理対象にするとフォルダ内に「.git」という隠しフォルダが作られます。(画像の黄色枠部分)
この中に、上の3つの場所が含まれています。
なのでファイルの変更からコミットに至るまでの流れは、全てGitの管理対象としたフォルダ内で行われていることになります。
それぞれの場所がどのように機能しているか、おおまかに説明するとこんな感じ
「ワークツリー」には変更したファイルがある
Gitのコミットにおいて、スタート地点になるのが「ワークツリー」です。
ここで編集したファイルを含むフォルダが、Gitのコミット対象になります。
「ステージングエリア」でコミットを記録
基本的に一度コミットされたファイルは変更や削除ができません。
あとからコミットを取り消したい!と思ってもその前後の状態が記録されるので、コミット自体がなかったことにはならないのです。
そのためコミットの扱いには気をつけなければいけません。
例えば間違ってファイル内の個人情報に関わる部分もコミットしてしまったらどうしますか?
そのまま公開してしまえば、全世界に個人情報をみられてしまう危険性があります。
なのでコミットする前に一度、コミット対象のファイルを確認できる必要があります!
そのための保険として機能するのが、2つめの「ステージングエリア」です。
ワークツリーで変更したファイルをコミットするには、一旦このステージングエリアに変更内容を登録します。
登録した内容は確認することができ、「このファイルはコミットしたいけど、逆にこれはしたくない」というような操作も可能です。
「Gitディレクトリ」でコミットを保管する
ステージングエリアに追加されたファイルがコミットされると、「Gitディレクトリ」に送られます。
ここまでが一連のコミットの流れです。
ちなみに先ほども言いましたが、Gitディレクトリに一旦コミットが入ると変更ができません。