ITエンジニアの技術メモ

神奈川在住のITエンジニアの備忘録です。おもにプログラミングやネットワーク技術について、学んだことを自分の中で整理するためにゆるゆると書いています。ちゃんと検証できていない部分もあるのでご参考程度となりますが、誰かのお役に立てれば幸いです。

gitでコミットする前にステージする理由

gitでは、リポジトリにコミットする前に、作業ディレクトリからステージング領域にファイルを上げる(addする)。つまり、以下のようなイメージ。

  作業ディレクトリ ---add---> ステージング領域 ---commit---> リポジトリ

コミットすると、gitはステージング領域にあるファイルをリポジトリにコミットする。

ここで、何故ステージング領域が必要かと言うと、例えば、しばらくコミットし忘れて、作業ディレクトリ内の多数のファイルを編集した後、編集したファイルのうち一部だけをコミットしたい場合があると思う。この時、コミットしたいファイルだけをaddしておけば、作業ディレクトリに対してコミットした時に、事前にaddしたファイルのみがリポジトリに追加される。まあ、コミットする単位を作業ディレクトリではなく、対象のファイルのみにすれば、ステージング領域は経由しなくても良いのだが。

簡単に纏めると、gitに対して、「作業ディレクトリ内のこのファイルとこのファイルをリポジトリへの追加対象にして下さい」と伝えるために、ステージング領域があるのだと思う。