Git rm several files?

29,711

Solution 1

You can give wildcards to git rm.

e.g.

git rm *.c

Or you can just write down the names of all the files in another file, say filesToRemove.txt:

path/to/file.c
path/to/another/file2.c
path/to/some/other/file3.c

You can automate this:

find . -name '*.c' > filesToRemove.txt

Open the file and review the names (to make sure it's alright).

Then:

cat filesToRemove.txt | xargs git rm

Or:

for i in `cat filesToRemove.txt`; do git rm $i; done

Check the manpage for xargs for more options (esp. if it's too many files).

Solution 2

Just delete them using any other method (Explorer, whatever), then run git add -A. As to reverting several files, you can also checkout a directory.

Solution 3

I found git rm's handling of wild cards annoying. Find can do the trick in one line: find . -name '*.c' -exec git rm {} \; the {} is where the file name will be substituted. The great thing about find is it can filter on a huge variety of file attributes not just name.

Solution 4

For removing multiple files at once, you might want to checkout the answer here

You can delete the files that you don't want and run this command: git rm $(git ls-files --deleted)

Solution 5

Easy way:

  • Delete files in your file explorer
  • use git ls-files --deleted | xargs git add to stage them. They will be removed in the remote once you push.

Git way: Referencing what @CpILL said (https://stackoverflow.com/a/34889424/6538751) use

  • find . -name 'DeleteMe*.cs' -exec git rm {} \;

you can utilize wildcards.

Share:
29,711
Tower
Author by

Tower

Updated on January 15, 2021

Comments

  • Tower
    Tower over 3 years

    How do I easily remove several files without manually typing the full paths of all of them to git rm? I have plenty of modified files I'd like to keep so removing all modified is not possible either.

    And also it is possible to revert the changes of several files without manually typing git checkout -- /path/to/file?