When working with Git, it’s common to stage files using git add
in preparation for a commit. But what if you added the wrong file or need to make more changes before committing? That’s where unstaging comes in.
In this guide, you’ll learn how to unstage a file in Git using simple, effective commands — without losing your work.
What Does “Unstage” Mean?
When you run git add
, Git moves changes from your working directory to the staging area (also called the index). These changes are then included in your next commit.
Unstaging a file simply means removing it from the staging area while keeping the changes in your working directory.
🛠️ How to Unstage a File
✅ To unstage a specific file:
git restore --staged filename
Example:
git restore --staged app.js
This removes app.js
from the staging area but retains your changes in the file.
✅ To unstage all staged files:
git restore --staged .
This will unstage all files currently added to the staging area.
✅ Using the Older Syntax (Still Common):
Before Git 2.23, the standard way to unstage files was:
git reset HEAD filename
This also works in newer versions and has the same effect.
Example:
git reset HEAD index.html
🔁 Both
git restore --staged
andgit reset HEAD
are safe for unstaging. They do not delete your changes.
🧪 Verify with git status
After unstaging, always check your status:
git status
You’ll see the file moved from the staged for commit section back to changes not staged for commit.
Summary of Commands
Action | Command |
---|---|
Unstage one file | git restore --staged filename |
Unstage all files | git restore --staged . |
Alternative (all versions) | git reset HEAD filename |
Conclusion
Unstaging a file in Git is a safe and straightforward way to clean up your staging area before making a commit. Whether you’re fixing a mistake or reorganizing your work, these commands help you stay in control of your version history.
Mastering this small but essential task will boost your confidence and efficiency when working with Git.