git addしたファイルを取り消したい
💬 質問
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 で取り消し、.gitignore に node_modules/ を追加しましょう。今後は自動的に無視されます。
解決しなかった?
エンジニアに質問する →