Як я можу ігнорувати .pycфайли в git?
Якщо я покладу, це .gitignoreне працює. Мені потрібно, щоб вони не відслідковувались та не перевірялися на комітети.
Як я можу ігнорувати .pycфайли в git?
Якщо я покладу, це .gitignoreне працює. Мені потрібно, щоб вони не відслідковувались та не перевірялися на комітети.
Відповіді:
Покладіть його .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файл у будь-якому з каталогів, що ведуть із кореня сховища (включно).
Ви повинні додати рядок із:
*.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
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у каталозі, в якому ви зараз перебуваєте, у вас буде ще кілька файлів, які будуть захоплені командою пошуку.
Наприклад:
./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.