【Git】git addとステージングの仕組み・状態確認を徹底解説!

【Git】git addとステージングの仕組み・状態確認を徹底解説!

記事の文字数:2642

本記事では、Gitにおけるステージングの概念と、それを実現するコマンド git add の使い方について、初心者にもわかりやすく解説しています。ステージングエリアの役割や具体的な操作方法、実践的なベストプラクティスまでを丁寧に紹介。Gitの履歴をきれいに保ち、効率的なバージョン管理を行うための基礎知識を身につけたい方におすすめの内容です。

Gitで変更を記録する前に行う操作が「ステージング(staging)」です。ステージングはファイルをすぐにコミットするのではなく、まず一時的なエリアに変更を登録しておくことで、より柔軟な履歴管理を実現できます。この一時的なエリアに登録するのが、ステージングでgit addコマンドを利用します。

「ファイルを編集したけど、どこまでコミットに含めるべきか?」──そんなときに活躍するのがステージングの仕組みです。本記事では、git add とステージングの基本概念から、実践的な使い方、そしてプロが意識しているベストプラクティスまでわかりやすく解説します。

ステージングとは?──コミット前の「準備エリア」

Gitのステージング(staging)とは、コミットする前に変更内容を一時的に保持しておくエリアのことです。このエリアにファイルの変更を登録することで、どの変更を次のコミットに含めるかを明確に指定できます。

ステージングを活用することで、以下のようなメリットがあります。

  • 意図した変更だけをコミットできる

    • 不要な修正を混ぜずに、目的ごとにきれいな履歴を残せます。
  • 複数の変更を分けて記録できる

    • 複数の修正を分けてコミットすれば、後からの変更追跡やレビューが格段に楽になります。
  • 差分確認が容易になる

    • ステージングした変更のみを確認できるため、意図しない修正を防げます。

git addで変更をステージングする

ステージングエリアに変更を追加するコマンドが git add です。

git addの基本構文

Terminal window
git add ファイル名

例:main.py の変更をステージングする場合

Terminal window
git add main.py

これで main.py の修正が「次回コミットに含める変更」として登録されます。

複数ファイルやディレクトリをステージングする

変更が複数のファイルにまたがっている場合や、ディレクトリ単位でステージングしたい場合には、次のような方法があります。

複数ファイルをステージングする
git add ファイル1 ファイル2 ファイル3
ディレクトリをステージングする
git add ディレクトリ名/

拡張子(ex:.py)を指定してステージングすることもできます。

Pythonファイルをステージングする
git add *.py

すべてのファイルをステージングする

カレントディレクトリ以下の全変更を一括でステージングするには .(ドット)を使います。

すべてのファイルをgit addする
git add .

ただし、このコマンドは不要なファイルまでステージングしてしまう可能性があるため注意が必要です。

ステージングの状態を確認する

現在どのファイルがステージングされているのかを確認するには、git status コマンドを使います。

実行コマンド
git status
出力例
$ git status
On branch 202504_after
Your branch is ahead of 'origin/202504_after' by 1 commit.
(use "git push" to publish your local commits)
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: ccc.txt
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: aaa.txt

このコマンドの出力では、Changes to be committedのセクションに表示されるファイルがステージング済みであることを意味します。それに対して、Changes not staged for commitに表示されているのは、まだステージングされていないファイルです。

  • Changes to be committed:ステージング済みのファイル
  • Changes not staged for commit:まだステージングされていないファイル

ステージング済みの差分を確認する

ステージング済みの差分を確認するには以下コマンドが便利です。

実行コマンド
git diff --staged

これにより、次回のコミットに含まれる変更内容を確認できます。

変更を部分的にステージングする

1つのファイル内に複数の修正が混在している場合は、git add -p が便利です。 このオプションを使うと、変更を「ハンク(hunk)」と呼ばれる小さな単位で確認しながらステージングができます。

実行コマンド
git add -p

主な操作は以下の通りです。

入力キー内容
yこの変更(ハンク)をステージングする
nこの変更(ハンク)をステージングしない
q以降の変更(ハンク)は表示せず終了する
a残りのすべてをステージング
d残りをすべてスキップ
s変更(ハンク)をさらに細かく分割する
e手動で変更内容を編集してステージングする

これにより、1ファイル内の複数の修正を目的ごとに分けてコミットすることができます。

ステージングで意識したいベストプラクティス

git addによるステージングを効果的に使うために、以下のポイントを意識しましょう。

  • 小さな単位でgit addする

    ひとつのコミットには、できるだけ意味のある単位で変更を含めましょう。これにより、履歴が読みやすくなり、トラブル時の原因追跡も容易になります。

    ポイント
    「1コミット=1トピック」を意識して、小分けにステージング。

  • 関連する変更だけをまとめる

    機能追加やバグ修正といった目的別に変更を整理してからステージングすると、チームでのコードレビューもスムーズになります。

    ポイント
    機能追加・修正・リファクタリングを混在させない。

  • git add -pで部分的に選ぶ

    このオプションを使えば、変更の一部だけを対話形式で選んでステージングすることが可能です。細かく変更をコントロールしたい場合に非常に便利です。

    ポイント
    不要な修正を混ぜずに、意図的なコミットを作れる。

  • .gitignoreを活用する

    ステージング対象から除外したいファイルやディレクトリがある場合は、.gitignore に明記しておくと意図しないコミットを防げます。

    ポイント
    一時ファイルやビルド成果物はステージング対象外に設定しておく。

まとめ:git addは「コミットの設計図」

git add は単なるファイル追加のコマンドではありません。 それは、「どの変更をコミットとして記録するかを設計するステップ」です。

ステージングを理解して使いこなすことで、

  • コード履歴の可読性が向上し、
  • チームレビューがスムーズになり、
  • バグ修正の追跡もしやすくなります。

ステージングを理解し、適切に活用することで、バージョン管理の質を大きく向上させることができます。 日常的な開発で git add を何気なく使うのではなく、 「コミットの品質を決める操作」として意識してみてください。


以上で本記事の解説を終わります。
よいITライフを!
スポンサーリンク
Scroll to Top