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

Игнорировать файл .pyc в репозитории git

как я могу игнорировать файл .pyc в git. Если я вставляю .gitignore, не работаю: мне нужно, чтобы они не отслеживались и не проверяли его на фиксацию.

4b9b3361

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