ステージングエリアとは?
ステージングエリアは、インデックスとも呼ばれ、次のコミットに入れる変更を正確に組み立てる保管スペースです。
ステージングエリアは Git のコミットを意図的なものにします。変更されたものすべてをコミットするのではなく、まずどの変更を含めるかをステージングして選びます。作業ファイルとコミットの間にあるこの中間ステップが、各コミットが記録する内容を正確に制御できるようにします。
3 つのエリア
Git には working directory(実際のファイル)、ステージングエリア(次のコミットのためにキューに入れられているもの)、リポジトリ(コミットされた履歴)があります。編集は working directory を変更し、git add は選択した変更をステージングへ移し、git commit はステージングされたものを履歴に記録します。
選択的にステージングする
ファイル全体、あるいはファイルの個々の部分までステージングして、焦点の絞られたコミットを作成できます。
Staging files and hunks
git add src/payments.ts
git add -p src/utils.ts
git statusインデックスが役立つ理由
ステージングエリアは、散らかった working directory をクリーンで論理的なコミットに分割できるようにします。ある 1 つのバグ修正を今ステージングし、関連のない実験は後回しにできます。これにより、各コミットが一貫していて自己完結した履歴が生まれ、レビューやデバッグの際に効果を発揮します。
ステージングと CI/CD
CI はコミットをビルドし、ステージングエリアがそれらのコミットを形作ります。規律あるステージングは単一の変更にきれいに対応する焦点の絞られたコミットを生み、CI の失敗を原因となった正確なコミットまで二分探索し、巻き添えなくその変更だけを元に戻すことをはるかに容易にします。
ステージングの習慣
- 現在のコミットに属する変更だけをステージングしましょう。
git add -pを使って作業を論理的な単位に分割しましょう。- コミット前に
git statusで内容を確認しましょう。 - レビューと二分探索を楽にする、焦点の絞られたコミットを目指しましょう。
重要なポイント
- ステージングエリアは次のコミットの内容を組み立てる場所です。
- 散らかった working directory から焦点の絞られたコミットを作成できます。
- 焦点の絞られたコミットは、CI の失敗を二分探索したり元に戻したりしやすくします。
関連ガイド
What Is a Git Commit?What is a Git commit? An explainer covering what a commit records, its message and hash, how commits form his…
What Is git stash?What is git stash? An explainer on temporarily shelving uncommitted changes to switch context, how to restore…
What Is a .gitignore File?What is a .gitignore file? An explainer on telling Git which files to ignore, common patterns, and why ignori…