git addしたファイルを取り消したい

Git 📅 2026年5月1日 👤 学習者さん

💬 質問

git add で間違ったファイルをステージに追加してしまいました。取り消す方法はありますか?

✅ 回答

大丈夫です!ファイルの変更内容は消えません。ステージから外すだけなので安心してください。

取り消しコマンド

# 特定のファイルをステージから外す
git restore --staged index.html

# 全ファイルをステージから外す
git restore --staged .

# 確認
git status

git status で緑(ステージ済み)から赤(未ステージ)に戻っていれば成功です。

⚠️ 絶対に間違えてはいけないこと

# ⚠️ 注意:--staged なしは「変更内容を元に戻す」(取り消し不可!)
git restore index.html  # ← ファイルの変更が消える!

# 安全:--staged ありは「ステージから外すだけ」(変更は残る)
git restore --staged index.html  # ← 変更はそのまま

--staged を忘れると、ファイルの変更内容自体が消えます。これは取り消せないので要注意。

状況別の対処法

状況 コマンド
addしたけどまだcommitしていないgit restore --staged ファイル名
commitしたけどまだpushしていないgit reset --soft HEAD~1
pushしてしまった新しいcommitで修正する(force pushは避ける)

VS Codeでの操作

コマンドが怖い場合、VS Codeの「ソース管理」パネルでも同じことができます。ステージ済みファイルの横にある「−」ボタンをクリックするだけでステージから外せます。

.gitignore で事前に防ぐ

「毎回間違えてaddしてしまうファイル」(node_modules、.envなど)は .gitignore に書いておけば、そもそもaddされなくなります。

git reset HEAD と git restore --staged の違い

どちらも「ステージから外す」コマンドですが、使い分けがあります。

git restore --staged(推奨):Git 2.23以降で追加された新しいコマンド。「ステージから外す」という意味が明確で初心者にもわかりやすい。

git reset HEAD:古いGitで使われていたコマンド。今でも動くが、resetという名前が「何かを壊しそう」で怖い。実際にはステージから外すだけで安全。

結論:git restore --staged を使いましょう。意味が明確で安全です。

よくある誤解:reset と revert の違い

git reset:コミット履歴を「なかったこと」にする。ローカルでまだpushしていないコミットを取り消すときに使う。

git revert:指定したコミットを打ち消す「新しいコミット」を作る。pushした後のコミットを取り消したいときに使う(履歴は残る)。

pushした後に reset --hard で強制的に戻すのは、チームメンバーに迷惑がかかるので避けましょう。revert を使えば安全に取り消せます。

中高生あるある:node_modules を add してしまった

学園祭サイトを作っていて、git add .(全ファイル追加)を実行したら node_modules フォルダ(数万ファイル)もステージに入ってしまった——これは初心者あるあるです。

git restore --staged node_modules で取り消し、.gitignorenode_modules/ を追加しましょう。今後は自動的に無視されます。

解決しなかった?

エンジニアに質問する →

📖 関連する用語