Игнорировать файл.pyc в репозитории git
Как я могу игнорировать файл .pyc в git. Если я вмешаюсь .gitignore не работают: мне нужно, чтобы они не отслеживались и не проверяли его на фиксацию.
4 ответа:
положите его в
.gitignore
. Но отgitignore(5)
man page:· 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
файл в любом из каталогов, ведущих из корня репозитория (включительно).
вы должны добавить строку:
*.pyc
до
.gitignore
файл в корневой папке дерева репозитория git сразу после инициализации репозитория.как ralphtheninja сказал, Если вы забыли сделать это заранее, если вы просто добавить строку
.gitignore
файл, все ранее совершенные.pyc
файлы по-прежнему будут отслеживаться, поэтому вам нужно будет удалить их из репозитория.если вы находитесь в системе Linux (или "родители и сыновья", как MacOSX), вы можете быстро сделать это с помощью только этой команды одной строки, которую вам нужно выполнить из корня репозитория:
find . -name "*.pyc" -exec git rm -f "{}" \;
это значит:
начиная с каталога, в котором я сейчас нахожусь, найдите все файлы, в которых имя заканчивается расширением
.pyc
, и передайте имя файла командеgit rm -f
после
*.pyc
удаление файлов из git в качестве отслеживаемых файлов, зафиксируйте это изменение репозиторий, а затем вы можете, наконец, добавить*.pyc
строку .(адаптировано из http://yuji.wordpress.com/2010/10/29/git-remove-all-pyc/)
вы, вероятно, добавили их в репозиторий, прежде чем положить
*.pyc
на.gitignore
.
Сначала удалите их из репозитория.
спасибо @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 "{}" \;
это будет удалить только из репозитория Git.