问题
Someone by accident just commited all of their bin and obj folders to our repo
(there are around 40 such folders). I would like to do a git rm -r
on all of these folders. Is there a command to do this?
回答1:
Have backups,
find . -type d -name bin -exec git rm -r {} \;
find . -type d -name obj -exec git rm -r {} \;
Update
With bash, you can set the shopt globstar, and be happy:
shopt -s globstar
git rm -r **/{obj,bin}/
Finally, if you need to remove these from the history of the repository, look at git filter-branch
and read the section on 'Removing Objects' from the Pro Git Book
回答2:
Once you revert (will keep files in history) or reset the commit,
git reset --hard
Once these are ignored files,
git clean -xdf
I use that to clean up before rebuilding a solution. Seems vs uses some dlls even after a checkout of a different branch or a merge.
You shouldn't need to resort to filter branch. Interactive rebase will do. Remember the --preserve-merges flag.
Hope this helps.
回答3:
Another option is to revert the offending commit with git revert
.
来源:https://stackoverflow.com/questions/5870727/git-need-to-recursively-git-rm-the-contents-of-all-bin-and-obj-folders