Git的:排除使用Git干净文件(Git: Exclude a file with git clea

2019-06-25 13:31发布

我工作的一大蟒蛇项目,我什么pyc文件和*〜文件真的病了。 我想将其删除。 我见过的-X混帐干净的标志将删除未跟踪文件。 你可以想像,我没有跟踪.pyc ,也没有*~文件。 这将使伎俩。 问题是,我有一个local_settings.py ,我想保持git的清洁后的文件。

所以,这就是我的本钱。

的.gitignore:

*.pyc
*~
local_settings.py

当我执行以下命令:

git clean -X -n -e local_settings.py

我得到的结果的这个列表:

将消除local_settings.py
将消除requirements.txt〜
将删除(其他一堆)〜文件
将删除(其他一堆)PYC文件

我不想删除local_settings.py文件。 我tryed很多方法可以做到这一点,但我无法弄清楚如何acomplish它。

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)

Answer 1:

能不能请你与小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)

从git的文档 :

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


Answer 2:

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

作品。 我发现这一点时,我用Google搜索,并得到了这个页面 。



Answer 3:

我把属于这一类别中的.git /信息的本地文件/排除(如我的IDE项目文件)。 他们可以做一个干净的就像这样:

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

哪里:

  • - 其他:显示未跟踪文件
  • --exclude-来自:提供一个标准的Git忽略样式文件从列表中排除
  • -z / -0:使用\ 0,而不是\ n拆分名
  • --no-运行,如果空:如果列表为空,不要运行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 /信息/排除)



Answer 4:

如果你正在运行的Python 2.6+只是设置环境变量, PYTHONDONTWRITEBYTECODE ,至true 。 你可以只添加以下内容类似.profile.bashrc完全停用了您的个人资料:

export PYTHONDONTWRITEBYTECODE=true

或者,如果你只是想这样做,对于一个特定的项目你的工作,你需要在每次运行上面的外壳(或在您的virtualenv init脚本之一,如果你正在使用的virtualenv和virtualenvwrapper)或者你可以简单地传递-B参数,当你调用python ,如

python -B manage.py runserver


Answer 5:

如果你已经COMMITED的PYC的等已经,做到以下几点:

添加*。pyc文件*〜和local_settings.py到的.gitignore。 然后做你的Git仓库:

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

然后做:

git commit -am "get rif of them"

现在他们不应该打扰你了



文章来源: Git: Exclude a file with git clean