Как я могу игнорировать .pycфайлы в git?
Если я его .gitignoreвставлю, это не сработает. Мне нужно, чтобы они не отслеживались и не проверялись на коммиты.
Как я могу игнорировать .pycфайлы в git?
Если я его .gitignoreвставлю, это не сработает. Мне нужно, чтобы они не отслеживались и не проверялись на коммиты.
Ответы:
Вставьте это .gitignore. Но со gitignore(5)страницы руководства :
· 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строку в .gitignoreфайл.
(адаптировано из http://yuji.wordpress.com/2010/10/29/git-remove-all-pyc/ )
Вы, наверное , добавили их в хранилище , прежде чем положить *.pycв .gitignore.
Сначала удалите их из репозитория.
Я пытаюсь использовать предложение из предыдущего сообщения и не работаю рекурсивно, затем прочтите справку и получите эту строку:
find . -name "*.pyc" -exec git rm -f "{}" \;
pd необходимо добавить * .pyc в файл .gitignore, чтобы поддерживать git clean
echo "*.pyc" >> .gitignore
Наслаждаться.
Если вы хотите игнорировать файлы .pyc глобально (т.е. если вы не хотите добавлять строку в файл .gitignore в каждый каталог git), попробуйте следующее:
$ cat ~/.gitconfig
[core]
excludesFile = ~/.gitignore
$ cat ~/.gitignore
**/*.pyc
[Ссылка]
https://git-scm.com/docs/gitignore
Шаблоны, которые пользователь хочет, чтобы Git игнорировал во всех ситуациях (например, резервные или временные файлы, созданные выбранным пользователем редактором), обычно помещаются в файл, указанный в core.excludesFile в ~ / .gitconfig пользователя.
Ведущий "**", за которым следует косая черта, означает совпадение во всех каталогах. Например, «** / foo» соответствует файлу или каталогу «foo» где угодно, так же, как шаблон «foo». «** / foo / bar» соответствует файлу или каталогу «bar» в любом месте, которое находится непосредственно в каталоге «foo».
Спасибо @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.