it-swarm.com.ru

Git: исключить файл с помощью git clean

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

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

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

И, кажется, ничего не работает.

Правка:

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

Пожалуйста, попробуйте это с маленьким 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.
20
Rifat
git clean -X -n --exclude="!local_settings.py"

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

13
forivall

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

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

Куда:

  • --others: показывает неотслеживаемые файлы
  • --exclude-from: предоставить стандартный файл стиля git ignore, который нужно исключить из списка
  • -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'

--Interactive означает, что вы должны выполнить git myclean -f для принудительного удаления.

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

3
Jonah Graham

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

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

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

затем сделайте:

git commit -am "get rif of them"

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

0
Christoph Eberhardt

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

export PYTHONDONTWRITEBYTECODE=true

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

python -B manage.py runserver
0
Chris Pratt