Git: Exclude a file with git clean
i'm working on a big python project, and i'm really sick if .pyc and *~ files. I'd like to remove them. I've seen that the -X
flag of git clean would remove untracked files. As you can imagine, i'm not tracking .pyc
nor *~
files. And that would make the trick. The problem is that i've a local_settings.py
file that I'd like to keep after the git clean.
So, this is what I've got.
.gitignore:
*.pyc
*~
local_settings.py
When I execute this command:
git clean -X -n -e local_settings.py
I get this list of results:
Would remove local_settings.py
Would remove requirements.txt~
Would remove (other bunch of) ~ files
Would remove (other bunch of) pyc files
I don't want to remove the local_settings.py file. I've tryed lots of ways to do it, but i can't figure out how to acomplish it.
git clean -X -n -e local_settings.py
git clean -X -n -e "local_settings.py"
git clean -X -n --exclude=local_settings.py
git clean -X -n --exclude="local_settings.py"
And nothing seems to work.
EDIT:
For posterity, the right way to do it is (Thanks @Rifat):
git clean -x -n -e local_settings.py # Shows what would remove (-n flag)
git clean -x -f -e local_settings.py # Removes it (note the -f flag)
Solution 1:
The difference is the capital X
you're using. Use a small x
instead of the capital one. Like in: git clean -x
.
git clean -x -n -e local_settings.py # Shows what would remove (-n flag)
git clean -x -f -e local_settings.py # Removes it (note the -f flag)
From the git documentation:
-x Don't use the standard ignore rules read from .gitignore (per directory) and $GIT_DIR/info/exclude, but do still use the ignore rules given with -e options. This allows removing all untracked files, including build products. This can be used (possibly in conjunction with git reset) to create a pristine working directory to test a clean build. -X Remove only files ignored by git. This may be useful to rebuild everything from scratch, but keep manually created files.
Solution 2:
git clean -X -n --exclude="!local_settings.py"
works. I discovered this when I googled and got this page.