How to 'undo a git add' before you commit

How to undo a staged Git file

The proper way to undo the git add command is to use git restore. This will unstage your files, essentially undoing any previously issued git add commands.

  • git restore –staged myfile.py

As for how not to undo a staged file in Git?  Don’t use git reset and definitely don’t use git rm.

I have seen other tutorials recommend git reset or git rm, but these commands are not designed for the specific task of removing a staged file in Git and should be avoided. So don’t do this:

  • git reset file-to-unstage.js
  • git rm –cached JavaClassToUnstage.java

Undo a git add example

To undo a git add on a file named HelloWorld.java, the command would be:

git restore --staged vibecoding.java

Here’s a quick, real-world example of how to unstage a Git file in Git. In this example we:

  • Perform a git clone command on a sample GitHub repository
  • Add a new file using the touch command
  • Stage the new file in Git’s index
  • Undo the git add command with git restore

Full git add undo example

In  this example you will also see the git status command. This command helps view the current state of the file.

$ git clone https://github.com/cameronmcnz/ufe.git
Clone the repo

$ cd ufe
Move to project folder

$ touch new-file.html
Create a new file

$ git status
Files not tracked: new-file.html

$ git add new-file.html
$ git status
Changes to be committed: new file: new-file.html

$ git restore --staged new-file.html
Git add undone successfully

$ git status
Untracked files: new-ile.html

Example of rm to unstage Git commands

The git restore command is relatively new, only being introduced in 2019.

Before the introduction of the git restore command, the git reset command was used by developers to undo a git add.

git reset this-file.txt

You can still undo a git add with this command, but it’s not the preferred choice.

Avoid the git rm command

An extreme measure for undoing a git add is the git rm command

git rm --cached new-file.txt

Avoid git rm.

You will not only undo the git add, but if used incorrectly, the file may be removed both from Git and from your project.

Need to undo a git add and unstage a file in git?

Use the git restore command. It’s the best option.