Home > Software design >  After a git reset --soft HEAD^ was performed, how do I remove files not needed by my repo?
After a git reset --soft HEAD^ was performed, how do I remove files not needed by my repo?

Time:03-22

I had to run

git reset --soft HEAD^

to undo a commit with large files (enter image description here

CodePudding user response:

Adding your files to .gitignore alone is not enough.

You should do this:

git update-index --assume-unchanged <file_path>

and add your files to .gitignore

If you want to do this to a directory, open that directory in your shell (using cd):

and execute this:

git update-index --assume-unchanged $(git ls-files | tr '\n' ' ')

CodePudding user response:

As chepner suggested in a comment, you probably really wanted a --mixed reset, not a --soft reset. However, as j6t added, you can recover from this error by using git rm --cached -rf .angular/cache (be sure to use the --cached to avoid removing the working tree copies).

You will still want to create or update your .gitignore so that you can't accidentally add the .angular/cache contents again. You should git add the file after updating it (or creating it with appropriate initial contents).

Had you used --mixed (or the default which is --mixed), you might have had to add some other files besides the .gitignore, but you could update the .gitignore file first, then use a standard "add everything" (git add .) to add everything except the current untracked-and-ignored files. This tends to be easier to get right, which is why it's the recommended method. But adding everything, then un-adding (git rm --cached -rf) the unwanted files, also works. It's just klunky and easy to get wrong.

  • Related