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


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

4 66

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.