как я могу игнорировать файл .pyc в git. Если я вставляю .gitignore, не работаю: мне нужно, чтобы они не отслеживались и не проверяли его на фиксацию.
Игнорировать файл .pyc в репозитории git
Ответ 1
Поместите его в .gitignore
. Но на странице gitignore(5)
man:
· If the pattern does not contain a slash /, git treats it as a shell glob pattern and checks for a match against the pathname relative to the location of the .gitignore file (relative to the toplevel of the work tree if not from a .gitignore file). · Otherwise, git treats the pattern as a shell glob suitable for consumption by fnmatch(3) with the FNM_PATHNAME flag: wildcards in the pattern will not match a / in the pathname. For example, "Documentation/*.html" matches "Documentation/git.html" but not "Documentation/ppc/ppc.html" or "tools/perf/Documentation/perf.html".
Итак, укажите полный путь к соответствующей записи *.pyc
или поместите ее в файл .gitignore
в любой из каталогов, ведущих из корня репозитория (включительно).
Ответ 2
Вы должны добавить строку с помощью:
*.pyc
в файл .gitignore
в корневой папке дерева репозитория git сразу после инициализации репозитория.
Как сказал ralphtheninja, если вы забыли сделать это заранее, если вы просто добавите строку в файл .gitignore
, все ранее зафиксированные файлы .pyc
будут по-прежнему отслеживаться, поэтому вам нужно будет удалить их из хранилище.
Если вы находитесь в системе Linux (или "родителях и сыновьях", например MacOSX), вы можете быстро сделать это только с помощью этой одной строки, которую нужно выполнить из корня репозитория:
find . -name "*.pyc" -exec git rm -f "{}" \;
Это означает:
начиная с каталога, в котором я сейчас находится, найдите все файлы, чьи имя заканчивается расширением
.pyc
и передает имя файла командеgit rm -f
После *.pyc
удаления файлов из git в качестве отслеживаемых файлов скопируйте это изменение в репозиторий, а затем вы можете, наконец, добавить строку *.pyc
в файл .gitignore
.
(адаптирован из http://yuji.wordpress.com/2010/10/29/git-remove-all-pyc/)
Ответ 3
Вы, вероятно, добавили их в репозиторий, прежде чем положить *.pyc
в .gitignore
.
Сначала удалите их из репозитория.
Ответ 4
Спасибо @Enrico за ответ.
Обратите внимание, что если вы используете virtualenv, у вас будет еще несколько файлов .pyc
в каталоге, в котором вы сейчас находитесь, который будет захвачен командой find.
Например:
./app.pyc
./lib/python2.7/_weakrefset.pyc
./lib/python2.7/abc.pyc
./lib/python2.7/codecs.pyc
./lib/python2.7/copy_reg.pyc
./lib/python2.7/site-packages/alembic/__init__.pyc
./lib/python2.7/site-packages/alembic/autogenerate/__init__.pyc
./lib/python2.7/site-packages/alembic/autogenerate/api.pyc
Я полагаю, что это безопасно удалить все файлы, но если вы хотите удалить файлы .pyc
в свой основной каталог, просто выполните
find "*.pyc" -exec git rm -f "{}" \;
Это приведет к удалению только файла app.pyc
из репозитория git.