Removing __pycache__ from git repository
You cannot remove files from existing commits: those commits are frozen for all time. You can make sure you do not add new files to future commits, though. Simply remove the files now, with git rm -r —cached __pycache__ , and list __pycache__ or __pycache__/ in your .gitignore (creating this .gitignore file if needed). Do this for each __pycache__ directory; use your OS’s facilities to find these (e.g., find . -name __pycache__ -type d ). Then git add .gitignore and git commit to commit the removal.
Note that any time anyone moves from any commit that has the files—where they’ll be checked out—to a commit that lacks the files, they will have their entire __pycache__ directory removed if Git is able to do that; at the least, any cached files that were committed and can be removed will be removed. So the —cached in the git rm -r —cached above only speeds things up for you by avoiding the removal of the cached compiled files this time. Others will have to rebuild their cache.
To make a new and different repository in which the __pycache__ files were ever accidentally committed in the first place, use git filter-branch (which is now deprecated) or the newfangled git filter-repo (which is not yet distributed with Git). Or, see any of these various existing questions and their answers, which you should already have found before you asked this:
- Remove a file from a Git repository without deleting it from the local filesystem
- Applying .gitignore to committed files
- How can I make Git «forget» about a file that was tracked, but is now in .gitignore?
- Remove sensitive files and their commits from Git history
Как сделать gitignore для файлов .idea и __pycache__*

Для выгрузки на GitHub необходимо убрать папки .idea и pycache ,однако добавив их в gitignore.txt это сделать не получается.
Отслеживать
задан 14 июн 2022 в 10:33
157 1 1 серебряный знак 10 10 бронзовых знаков
pycache и __pycache__ это вообще-то разные вещи
14 июн 2022 в 10:34
Ну и файл должен называться не gitignore.txt , а .gitignore
14 июн 2022 в 10:35
А так же в начале нужно написать команду git init , а если нет гита то установить тут
14 июн 2022 в 10:48
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Не балуйтесь, добавьте уже устоявшуюся готовую «болванку» «.gitignore для python» например, эту
Если же Вы хотите непременно написать .gitignore самостоятельно — то папки добавляются туда со слешом на конце, чтобы отличать их от файлов, например, __pycache__/
Кстати, оказывается, написать и опубликовать .gitignore на github — отличный способ получить офигенно «форкаемый» проект! Тот репозиторий, который я привел в начале ответа, форкнут более 75 тысяч раз!
Также, важное замечание, которое сделал andreymal и которое позволит не биться головой об клавиатуру: файл имеет имя .gitignore . То есть, не gitignore.txt и не gitignore. То, что он начинается с точки, делает его «скрытым». С точки зрения пользователей Windows — это файл без имени и с расширением gitignore
Как удалить папку из удаленного репозитория git
Если вы хотите удалить директорию из удаленного репозитория, но оставить её на вашем компьютере (например, вы ошибочно запушили директорию с локальным окружением .venv ), то выполните следующие команды
rm --cached -r git commit -m "remove имя_директории from repository" git push origin main
Также добавьте имя директории или паттерн для исключения в .gitignore , чтобы в дальнейшем она не добавлялась в индекс
Удаление файлов.pyc из удаленного репозитория Git
Нет, вы не можете удалить их напрямую из интерфейса BitBucket, но вы можете удалить их в своем локальном заказе и find./ -type f -name ‘*.pyc’ -exec git rm <> \; ( или просто git rm каждого файла pyc по одному). Затем зафиксируйте/отправьте ваши изменения.
Наконец, чтобы избежать повторения той же ошибки, вы можете создать файл в корне вашего репозитория и назвать его ‘.gitignore’ с содержимым:
*.pyc *~ *.swp
*~ и ~.swp — это другие часто забытые типы файлов, которые часто случайно отправляются. См. документацию на GitHub по gitignore https://help.github.com/articles/ignoring-files (и их репозиторий файлов.gitignore для некоторых приятных по умолчанию).
Поделиться 29 сентября 2014 в 10:11
git rm *.pyc --cached git commit -a -m'remove pyc from index' git push
PS: Я вижу дату вопроса, но это решение выглядит лучше, эмхо. Возможно, это поможет кому-то.
Поделиться 14 февраля 2016 в 14:35
Это работает для меня,
find . -name '*.pyc' | xargs -n 1 git rm --cached
Поделиться 28 июня 2017 в 08:05
Чтобы удалить все файлы .pyc , используйте git rm -rf *.pyc
Затем добавьте *.py[co] в ваш файл .gitignore. (Это предотвратит коммиты файлов.pyc и.pyo в будущих коммитах)
Поделиться 27 октября 2016 в 10:47
Я использовал решение Simeg, но также хотел удалить тонны файлов *.pyc, добавленных по ошибке в ветку. Я использовал awk, чтобы удалить их из кэша рекурсивно.
git status | awk ''
Затем я удалил файлы из своего локального сервера
find . -name *.pyc -delete
Поделиться 28 августа 2016 в 00:11
Быстрый способ с помощью PyDev для Eclipse .
Перейдите в проводник пакетов PyDev вашего проекта и выполните следующее:
-
щелкните правой кнопкой мыши + Pydev / Удалите *.pyc *.pyo и *$py.class Файл
будет открыто окно, в котором будет указано, сколько файлов было удалено.
Необязательно: Зафиксируйте ваше изменение в команде/сервере:
В окне коммита вы не должны видеть доступных файлов.pyc для добавления, так как мы их удалили. Также, если вы зафиксировали такие файлы ранее, то теперь вы можете зафиксировать их «удаление».
===> Теперь ваш локальный и серверный репозитории свободны от файлов *.pyc *.pyo и *$py.class 🙂
Поделиться 27 июня 2016 в 10:44
Поскольку в Bitbucket по умолчанию нет файла.gitignore в репозитории, вы можете сделать следующее:
- вы можете создать локальный.gitignore (не должен быть отправлен) и добавить *.pyc как строку;
- вы можете скопировать.gitignore в репозиторий Github и добавить *.pyc как строку в этот файл! Вы можете отправить его или сохранить в своем локальном репозитории!
Поделиться 01 июня 2015 в 04:39
Однострочник для веселья:
git status | grep pyc | sed -e ‘s/ new file: //g’ | xargs -I <> git rm —cached <>
Поделиться 20 октября 2016 в 00:18
еще одна строка для развлечения, чтобы удалить все файлы pyc.
найти. -name ‘*.pyc’ -exec git rm <> \;
не забудьте следовать шагам в других ответах, чтобы зафиксировать и добавить gitignore.