「あ、間違えてgit addしちゃった!」
そんな経験、ありませんか?大丈夫です。git addは簡単に取り消せます。しかも、ファイルの内容は一切失われません。
この記事では、git addを取り消す方法を、よくある状況別に分かりやすく解説します。コマンドをコピペするだけで解決できるよう、実例付きで説明していきますね。
そもそもgit addって何をしているの?

ステージングエリアという「待合室」
git addを理解するには、ステージングエリア(インデックスとも呼ばれます)という概念を知る必要があります。
ステージングエリアは、コミットする前の「待合室」のようなものです。
実例:写真をSNSに投稿する流れで考える
- スマホで写真を撮る(ファイルを編集)
- 投稿する写真を選ぶ(git add = ステージングエリアに追加)
- まとめて投稿する(git commit)
git addは「この変更をコミットに含めますよ」という準備作業なんです。
なぜ取り消したくなるの?
よくある理由としては:
- 間違ったファイルをaddしてしまった
- まだ編集途中のファイルをaddしてしまった
- 秘密情報が含まれるファイルをaddしてしまった
- テスト用のファイルを含めてしまった
どんな理由でも、適切な方法で取り消せるので安心してください。
基本の取り消し方法:git restore –staged
最新のGit(2.23以降)での推奨方法
2019年にリリースされたGit 2.23から、git restore
コマンドが推奨されています。
特定のファイルを取り消す:
git restore --staged ファイル名
実例:
git restore --staged index.html
これで、index.htmlのgit addが取り消され、ステージングエリアから外れます。でも、ファイルの変更内容はそのまま残っているので安心してください。
すべてのファイルを一度に取り消す
間違えてgit add .
してしまった場合など、すべてを取り消したいときは:
git restore --staged .
ピリオド(.)を使うことで、ステージングエリアのすべてのファイルが取り消されます。
従来の方法:git reset(今でも使える)
git resetを使った取り消し
Git 2.23より前のバージョンを使っている場合や、慣れ親しんだ方法を使いたい場合は、git reset
も使えます。
特定のファイルを取り消す:
git reset HEAD ファイル名
実例:
git reset HEAD style.css
すべてのファイルを取り消す:
git reset HEAD
HEADは「現在のコミット」を指す特別な名前です。このコマンドも、ファイルの内容は変更しません。
状況別の解決方法

ケース1:初めてのコミット前(リポジトリを作ったばかり)
新しくリポジトリを作成して、まだ一度もコミットしていない場合、HEADが存在しないので少し特殊です。
解決方法:
git rm --cached ファイル名
実例:
git rm --cached README.md
--cached
オプションを付けることで、ファイル自体は削除されず、ステージングエリアから外れるだけです。
ケース2:特定の種類のファイルだけ取り消したい
たとえば、.log
ファイルをすべて取り消したい場合:
git restore --staged *.log
画像ファイルをすべて取り消したい場合:
git restore --staged *.jpg *.png *.gif
ケース3:フォルダごと取り消したい
特定のフォルダ以下をすべて取り消す:
git restore --staged フォルダ名/
実例:
git restore --staged src/test/
これで、src/testフォルダ以下のすべてのファイルがステージングエリアから外れます。
ケース4:一部のファイルは残して、特定のファイルだけ取り消したい
複数のファイルをaddした後、一部だけ取り消したい場合:
# 3つのファイルをadd
git add index.html style.css script.js
# style.cssだけ取り消す
git restore --staged style.css
# 結果:index.htmlとscript.jsはステージングされたまま
よくあるトラブルと解決方法
トラブル1:「fatal: ambiguous argument ‘HEAD’」エラー
原因: まだ一度もコミットしていないリポジトリでgit reset HEAD
を使った
解決方法:
git rm --cached ファイル名
トラブル2:取り消したのにgit statusに表示される
原因: これは正常な動作です
git addを取り消しても、ファイルの変更自体は残っています。git statusでは「Changes not staged for commit」として表示されます。
表示の意味:
- 赤文字:ステージングされていない変更
- 緑文字:ステージングされた変更
トラブル3:間違えて git reset –hard を使ってしまった
注意: git reset --hard
は変更内容も消えてしまう危険なコマンドです!
もし使ってしまった場合の復旧方法:
git reflog
# 戻りたいコミットのハッシュを確認
git reset --hard ハッシュ値
実践的な使い分けガイド
どのコマンドを使うべき?
基本的な選び方:
- Git 2.23以降を使っている →
git restore --staged
- Git 2.23より前 →
git reset HEAD
- 初回コミット前 →
git rm --cached
覚えておくと便利なエイリアス設定
毎回長いコマンドを打つのが面倒な場合は、エイリアス(短縮コマンド)を設定できます:
# "git unstage"で取り消せるようにする
git config --global alias.unstage 'restore --staged'
# 使い方
git unstage ファイル名
GitのGUIツールでの取り消し方法
Visual Studio Code
- 左側のソース管理アイコンをクリック
- 「ステージされた変更」セクションを確認
- 取り消したいファイルの「-」アイコンをクリック
GitHub Desktop
- 「Changes」タブを開く
- チェックボックスのチェックを外す
SourceTree
- 「ステージしたファイル」エリアを確認
- ファイルを選択して「ステージから除去」をクリック
GUIツールを使えば、コマンドを覚える必要もありません。初心者の方には特におすすめです。
予防策:間違えてaddしないための工夫

.gitignoreファイルを活用する
追跡したくないファイルは、最初から.gitignore
に登録しておきましょう:
# .gitignoreの例
*.log
*.tmp
node_modules/
.env
secrets/
git add -pで確認しながら追加
変更を確認しながら部分的にaddできます:
git add -p ファイル名
これを使うと、変更箇所ごとに「追加する/しない」を選べます。
git statusで常に確認する習慣
コミット前に必ず確認:
git status
緑色で表示されているファイルがステージングされたファイルです。
まとめ:git addの取り消しは怖くない
git addの取り消しについて、様々な方法を見てきました。
重要なポイント:
- ファイルの内容は消えない – 取り消してもファイルは無事
- 最新版なら
git restore --staged
– 一番シンプルで分かりやすい - 状況に応じて使い分ける – 初回コミット前は特別な対応が必要
今すぐ使える3つのコマンド:
git restore --staged ファイル名
– 特定ファイルの取り消しgit restore --staged .
– 全ファイルの取り消しgit status
– 現在の状態確認
最初は間違えることもあるでしょう。でも、Gitは失敗に寛容なツールです。この記事を参考にして、安心してGitを使ってください。
コマンドは慣れれば自然に使えるようになります。まずは基本のgit restore --staged
だけ覚えておけば、ほとんどの場面で対応できますよ!
コメント