Undo “git add <dir>”?

Solution 1:

To remove a directory and everything inside it from the index,

git rm --cached -r dir

The --cached switch makes git rm operate on the index only and not touch the working copy. The -r switch makes it recursive.

Solution 2:

You will want to use git rm --cached -r <dir>. this command will remove the staged directory contents from the index.

if the directory was already tracked you have to find new and old files manually and unstage them …

Probably run git reset <dir> after that to reset existing (and already tracked) files inside the directory.


Update 2019:

Simply run git reset directory, it will unstage all newly added files.

Solution 3:

Unstage directory

$ git reset <dir>

Unstages all the files and folders I staged with:

$ git add <dir>

Confirm directory unstaged

In order to confirm the removal of the directory and its contents from staging (ie "Changes to be committed"), run the below:

$ git status

or

$ git diff --staged --name-only 

to confirm that none of the folders or files previously staged are still staged.