Подтвердить что ты не робот

Git: исключить файл с git clean

Я работаю над большим проектом python, и я действительно боюсь, если файлы .pyc и * ~. Я бы хотел их удалить. Я видел, что флаг -X в git clean удалит ненужные файлы. Как вы можете себе представить, я не отслеживаю файлы .pyc и *~. И это сделало бы трюк. Проблема в том, что у меня есть файл local_settings.py, который я хочу сохранить после git clean.

Итак, это то, что у меня есть.

.gitignore:

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

И ничего не работает.

EDIT:

Для потомков правильный способ сделать это (спасибо @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)
4b9b3361

Ответ 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.

Ответ 2

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

работает. Я обнаружил это, когда я googled и получил эту страницу.

Ответ 3

Если вы используете Python 2.6+, просто установите переменную окружения PYTHONDONTWRITEBYTECODE, true. Вы можете просто добавить следующее к чему-то вроде .profile или .bashrc, чтобы полностью отключить его для вашего профиля:

export PYTHONDONTWRITEBYTECODE=true

Или, если вы просто хотите сделать это для конкретного проекта, который вы работаете, вам нужно будет запускать выше в своей оболочке каждый раз (или в одном из скриптов инициализации virtualenv, если вы используете virtualenv и virtualenvwrapper), или вы можете просто передать параметр -B при вызове python, например

python -B manage.py runserver

Ответ 4

Если вы уже совершили pyc и так далее, сделайте следующее:

Добавьте *.pyc, * ~ и local_settings.py в .gitignore. Затем сделайте это в репозитории git:

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

то do:

git commit -am "get rif of them"

теперь они больше не должны вас беспокоить

Ответ 5

Я помещал локальные файлы, попадающие в эту категорию в .git/info/exclude (например, мои файлы проекта IDE). Они могут сделать это так:

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

Где:

  • - другие: отображает невоспроизводимые файлы
  • - exclude-from: предоставить стандартный git файл стиля игнорирования для исключения из списка
  • -z/-0: используйте \0 вместо\n для разделения имен
  • - no-run-if-empty: не запускать 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'

"Интерактивный" означает, что вы должны сделать git myclean -f, чтобы принудительно удалить.

Ссылка: http://git-scm.com/docs/git-ls-files (плюс первая строка по умолчанию .git/info/exclude)