ステージングとは?
ステージングは、作業中の変更から「次のコミットへ入れるもの」を選ぶ工程です。Gitでは、選ばれた内容を置く場所をステージングエリア、またはインデックスと呼びます。
ファイルを保存しただけでは、変更はまだコミットへ含まれません。コマンドではgit addを使い、GitHub DesktopやSourceTreeでは変更したファイルのチェックボックスなどで対象を選びます。
なぜ一度選ぶ工程がある?
一日の作業では、複数の目的の変更が同時に発生します。たとえば見出しの修正と新機能の追加を別のコミットへ分けたい場合、ステージングで必要な変更だけを選べます。
この工程により、一つのコミットを「何を変えたか説明できる大きさ」に整えやすくなります。すべてを毎回まとめてコミットするより、あとで履歴を読みやすくできます。
保存・ステージング・コミットの違い
- 保存:編集した内容をファイルへ書き込む
- ステージング:次のコミットへ含める変更を選ぶ
- コミット:選んだ変更をGitの履歴へ記録する
コミット前に差分を確認する
ステージングした内容は、コミット前の最終確認場所でもあります。デバッグ用の出力、不要な整形、APIキーなどが紛れていないか、差分を見て確認します。
git add .は多くの変更をまとめて選べますが、意図しないファイルまで含む可能性があります。慣れないうちはファイルごとに確認する方が安全です。
ステージングから外す操作は、通常、作業中のファイル変更そのものを削除しません。「次のコミットへ入れない状態へ戻す」操作です。変更の取り消しとは意味が違うため、GitクライアントのUnstage、Discard Changesなどの表示を区別してください。
すでにステージングしたあとで同じファイルを再編集すると、選択済みの内容と、その後の未選択の内容が同時に存在する場合もあります。コミット直前に差分をもう一度確認すると安心です。