Git:使用git clean排除文件

yshpjwxd  于 2022-11-20  发布在  Git
关注(0)|答案(5)|浏览(251)

我正在做一个大的python项目,如果有.pyc和 *~文件,我真的很不舒服。我想删除它们。我已经看到git clean的-X标志会删除未跟踪的文件。正如你所想象的,我没有跟踪.pyc*~文件。这将使技巧。问题是,我有一个local_settings.py文件,我'I“我想把这件礼物保持干净。
所以,这就是我所得到的。
.忽略:

*.pyc
*~
local_settings.py

当我执行此命令时:

git clean -X -n -e local_settings.py

我得到以下结果列表:
将删除local_settings.py
将删除要求.txt~
会移除(其他一堆)~档案
将删除(其他一堆)pyc文件
我不想删除local_settings.py文件。我已经尝试了很多方法,但我不知道如何完成它。

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"

而且似乎什么都不管用。

编辑:

对于后人来说,正确的做法是(感谢@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)
oxcyiej7

oxcyiej71#

不同的是您使用的大写X。使用小写的x代替大写的x。例如: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)

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.
z5btuh9x

z5btuh9x2#

git clean -X -n --exclude="!local_settings.py"

工作。我发现这个当我谷歌,并得到this page

w6lpcovy

w6lpcovy3#

我把本地文件放在.git/info/exclude目录下(比如我的IDE项目文件),你可以这样清理:

git ls-files --others --exclude-from=.git/info/exclude -z | \
    xargs -0 --no-run-if-empty rm --verbose

其中:

  • --others:显示未跟踪的文件
  • --排除自:提供要从列表中排除的标准git ignore样式文件
  • -z / -0:使用\0而不是\n拆分名称
  • --如果为空则不运行:如果列表为空,则不运行rm

您可以创建别名,例如:

git config --global alias.myclean '!git ls-files --others --exclude-from=.git/info/exclude -z | xargs -0 --no-run-if-empty rm --verbose --interactive'

--interactive意味着你必须执行git myclean -f来强制删除。
引用:http://git-scm.com/docs/git-ls-files(加上默认.git/info/exclude的第一行)

trnvg8h3

trnvg8h34#

如果你运行的是Python 2.6+,只需将环境变量PYTHONDONTWRITEBYTECODE设置为true,你可以在.profile.bashrc中添加以下内容,以便在你的配置文件中完全禁用它:

export PYTHONDONTWRITEBYTECODE=true

或者,如果您只想为正在工作的特定项目执行此操作,则每次都需要在shell中运行以上代码(如果您使用virtualenv和virtualenvwrapper,则需要在virtualenv init脚本中运行),或者您可以在调用python时简单地传递-B参数,例如:

python -B manage.py runserver
goqiplq2

goqiplq25#

如果您已经提交了pyc等,请执行以下操作:
.pyc、~和local_settings.py添加到. gitignore中,然后在git仓库中执行以下操作:

find . -name '*.pyc' | xargs rm
find . -name '*~' | xargs rm

然后执行:

git commit -am "get rif of them"

现在他们应该不会再来烦你了

相关问题