git addの取り消し方法を徹底解説|ステージング解除の正しい手順
技術
公開日: 2026/03/05
目次
※この記事にはプロモーションを含みます
はじめに
git addで誤ってファイルをステージングしてしまい、取り消したいと感じたことはないでしょうか。
Gitでは作業ツリー・ステージングエリア・コミットの3段階で変更を管理しますが、それぞれの役割を理解していないと誤操作につながります。本記事では「git add 取り消し」をテーマに、ステージングのみを解除する方法や変更自体を戻す方法を状況別に整理し、安全に操作するためのポイントを分かりやすく解説します。
git addの取り消しが必要になるケース

誤ったファイルをステージングした場合
開発中に git add . を実行した結果、本来コミット対象ではないファイルまでステージングしてしまうケースは少なくありません。例えば、一時的な検証ファイルやログファイル、機密情報を含む設定ファイルなどが含まれることがあります。
この状態のままコミットすると、履歴が不要な変更で汚れたり、チーム開発において混乱を招いたりする恐れがあります。そのため、コミット前にステージングを見直し、不要な変更を取り消す操作が重要です。
一部の変更のみ除外したい場合
1つのファイル内で複数の修正を行った場合、そのうちの一部だけをコミットしたい場面もあります。しかし、まとめて git add を実行すると、すべての変更がステージングされてしまいます。
このような場合、不要な差分を一度取り消し、必要な変更のみを再度ステージングすることで、コミット履歴を整理できます。履歴の粒度を適切に保つことは、保守性の高いプロジェクト運営に直結します。
コミット前に内容を整理したい場合
コミット前に git status を確認した際、「やはりこの変更は次のコミットに回したい」と判断することもあります。こうした調整を柔軟に行えるのがGitの強みです。
ステージングの取り消しを理解していれば、コミット単位を戦略的に設計できるようになります。結果として、後から履歴を追いやすくなり、レビュー効率やトラブル対応力が向上します。
git ステージング 取り消しの基本コマンド

git reset HEADの使い方
従来から広く使われているのが、以下のコマンドです。
git reset HEAD <ファイル名>
このコマンドは、指定したファイルをステージングエリア(インデックス)から外し、作業ツリーの変更はそのまま保持します。つまり 「addだけを取り消す」操作です。
すべてのファイルを取り消す場合は、以下のように実行します。
git reset HEAD
ただし、reset は履歴操作にも使われるため、オプションを誤ると意図しない影響を及ぼす可能性があります。基本形の理解が重要です。
git restore —stagedの使い方
Git 2.23以降では、より直感的なコマンドとして以下が利用できます。
git restore --staged <ファイル名>
これはステージングの解除に特化したコマンドであり、reset よりも役割が明確です。初心者にはこちらの使用が推奨されます。
全ファイルを対象とする場合は次のとおりです。
git restore --staged .
コマンドの違いと使い分け
| コマンド | 主な用途 | 推奨ケース |
|---|---|---|
git reset HEAD | 旧来の方法 | Gitに慣れている場合 |
git restore --staged | ステージング解除専用 | 初心者・明示的操作 |
reset は多機能である一方、誤用リスクがあります。安全性を重視するなら restore --staged を優先するのが実務上のベストプラクティスです。
変更自体を取り消す方法との違い

作業ツリーを元に戻すコマンド
ステージング解除ではなく、「変更そのもの」を破棄したい場合は次のコマンドを使用します。
git restore <ファイル名>
これは作業ツリーの変更をHEADの状態に戻す操作です。未保存の変更が完全に失われるため、慎重に実行する必要があります。
ステージング解除との違い
違いを整理すると以下の通りです。
| 操作 | 変更内容 | ステージング |
|---|---|---|
git restore --staged | 保持される | 解除される |
git restore | 破棄される | 対象外 |
つまり、「addの取り消し」は変更内容を消さずにステージングだけを外す操作であり、変更破棄とは本質的に異なります。
状況別|git addを戻す具体例
単一ファイルを取り消す場合
特定ファイルのみを解除する場合は、以下を使用します。
git restore --staged index.html
これにより、該当ファイルのみステージングから除外されます。
複数ファイルをまとめて取り消す場合
ディレクトリ単位で解除することも可能です。
git restore --staged src/
または全体を対象にする場合は以下です。
git restore --staged .
状況に応じて対象範囲を明確に指定することが重要です。
特定の変更だけを除外する場合
より細かく制御する場合は、対話形式での追加を活用します。
git add -p
不要な変更をステージングから外し、必要な部分のみを選択できます。履歴を論理的に分割したい場合に有効です。
安全にGit操作を行うためのポイント

作業ツリー・インデックス・HEADの理解
Gitは以下の3層構造で管理されています。
1.作業ツリー
2.インデックス(ステージングエリア)
3.HEAD(最新コミット)
この関係を理解することで、「どの層に対する操作なのか」を正確に判断できるようになります。
git statusで状態を確認する習慣
操作前後には必ず以下を実行してください。
git status
現在の状態を可視化することで、誤操作を未然に防げます。特にチーム開発では必須の習慣です。
誤操作を防ぐベストプラクティス
ミスなくGitを使いこなすために、日頃から以下の習慣を心がけましょう。
- 小さな単位でコミットする
- コマンド実行前に差分を確認する
restore --stagedを優先的に使う
これらを徹底することで、安全かつ効率的なバージョン管理が可能になります。
まとめ
git addの取り消しは、Gitを安全に運用するための基本操作です。ステージング解除と変更破棄の違いを理解し、git restore --staged や git reset HEAD を適切に使い分けることで、履歴の整合性を保ちながら開発を進められます。
特に実務では、コミット履歴の品質がプロジェクト全体の可読性と保守性を左右します。日頃から状態確認を徹底し、慎重に操作する姿勢が重要です。
エンジニアを目指して学習を効率よく進めたい方には WEBMASTERS がおすすめです。 Web制作に必要な基礎知識が実践を通して効率よく身につくため、学習効率が大幅に向上します。学習環境や教材が充実しており、独学ではつまずきやすいポイントも現役エンジニアがしっかりサポートいたします。