从 pythonanywhere 添加/提交时,将 `__pycache__` 保留在我的存储库之外

Posted

技术标签:

【中文标题】从 pythonanywhere 添加/提交时,将 `__pycache__` 保留在我的存储库之外【英文标题】:Keeping `__pycache__` out of my repository when adding/committing from pythonanywhere 【发布时间】:2018-03-07 19:42:22 【问题描述】:

我在本地 win7 机器上构建了一个 Web 应用程序。我用 pycharm 做的,用 git 作为版本控制。我是个 git 新手。

我将存储库放在 github 上,以便我可以将 webapp 暂存到我的 pythonanywhere 服务器。

在 pythonanywhere 方面,我对各种文件进行了一些小的编辑。我想将这些更改提交回存储库。

(udemy) 10:44 ~/keystone (master)$ git commit -m "got it running on pythonanywhere staging"
On branch master
Your branch is up-to-date with 'origin/master'.
Changes not staged for commit:
        modified:   keystone/settings/base.py
        modified:   keystone/settings/local_postgres.py
        modified:   keystone/settings/staging_straits.py
        deleted:    p0150_1.pdf
Untracked files:
        crapboard/__pycache__/
        crapboard/migrations/__pycache__/
        crapboard/templatetags/__pycache__/
        keystone/__pycache__/
        keystone/settings/__pycache__/
no changes added to commit

我想将三个修改过的文件和一个删除文件提交到存储库。

原来如此

(udemy) 14:03 ~/keystone (master)$ git add --all
(udemy) 14:03 ~/keystone (master)$ git commit -m "staged to pythonanywhere"
[master ac6bb7e] staged to pythonanywhere
 27 files changed, 23 insertions(+), 115 deletions(-)
 create mode 100644 crapboard/__pycache__/__init__.cpython-36.pyc
 create mode 100644 crapboard/__pycache__/admin.cpython-36.pyc
 create mode 100644 crapboard/__pycache__/apps.cpython-36.pyc
 create mode 100644 crapboard/__pycache__/forms.cpython-36.pyc
 create mode 100644 crapboard/__pycache__/models.cpython-36.pyc
 create mode 100644 crapboard/__pycache__/pdf_views.cpython-36.pyc
 create mode 100644 crapboard/__pycache__/urls.cpython-36.pyc
 create mode 100644 crapboard/__pycache__/views.cpython-36.pyc
 create mode 100644 crapboard/migrations/__pycache__/0001_initial.cpython-36.pyc
 create mode 100644 crapboard/migrations/__pycache__/0001_squashed_0005_auto_20170921_2154.cpython-36.pyc
 create mode 100644 crapboard/migrations/__pycache__/0002_auto_20170909_1137.cpython-36.pyc
 create mode 100644 crapboard/migrations/__pycache__/0003_auto_20170912_2029.cpython-36.pyc
 create mode 100644 crapboard/migrations/__pycache__/0004_problem_author.cpython-36.pyc
 create mode 100644 crapboard/migrations/__pycache__/0005_auto_20170921_2154.cpython-36.pyc
 create mode 100644 crapboard/migrations/__pycache__/__init__.cpython-36.pyc
 create mode 100644 crapboard/templatetags/__pycache__/__init__.cpython-36.pyc
 create mode 100644 crapboard/templatetags/__pycache__/crapboard_filters.cpython-36.pyc
 create mode 100644 keystone/__pycache__/__init__.cpython-36.pyc
 create mode 100644 keystone/__pycache__/urls.cpython-36.pyc
 create mode 100644 keystone/settings/__pycache__/__init__.cpython-36.pyc
 create mode 100644 keystone/settings/__pycache__/base.cpython-36.pyc
 create mode 100644 keystone/settings/__pycache__/settings_secret.cpython-36.pyc
 create mode 100644 keystone/settings/__pycache__/staging_straits.cpython-36.pyc
 rewrite keystone/settings/staging_straits.py (65%)
 delete mode 100644 p0150_1.pdf

啊。它也提交了所有这些__pycache__ 目录。

我猜这是因为我应该在我的 pythonanywhere 服务器上创建某种全局/通用 .gitignore 文件?

所以问题:

1) 我如何从我的存储库中永久删除这些 pycache 内容 2) 如何防止我的 pythonanywhere 服务器将来尝试将这些内容添加到我的存储库中——我的 pycharm/本地机器没有这个问题——它会忽略这些文件。

【问题讨论】:

一些线索:***.com/questions/1139762/…(你的目录中可能已经有一个 .gitignore 文件) 在第 (1) 部分:请注意,您不能更改任何现有提交,但您可以停止使用它们,最终,如果无法找到它们,它们就会过期.如果您没有在其他任何地方发送此新提交(以便只有您拥有它),您可以停止使用此提交(通过使用git commit --amend 将其推到一边,或使用git reset 隐藏它让你甚至看不到它)。然后,您的任何(可见)提交中都不会包含 __pycache__,因此您也不会将包含它的提交发送到任何其他存储库。 放入.gitignore 调整 gitignore 后,我不得不对每个文件都这样做,所以我调用 awk 寻求帮助:“git status | grep pycache | awk 'print $3' | xargs git reset HEAD”跨度> 【参考方案1】:

根据git docs,很简单的在~/.gitignore 中添加以下内容:

**/__pycache__

前导“**”后跟斜杠表示在所有目录中都匹配。为了 例如,“**/foo”在任何地方匹配文件或目录“foo”,相同 作为模式“foo”。 "**/foo/bar" 匹配文件或目录 "bar" 直接在“foo”目录下的任何地方。

【讨论】:

我的错,我的文件夹已经被跟踪了,这就是为什么它不起作用【参考方案2】:
    您可以通过git rm 删除该文件夹,然后提交并推送该文件夹。或者,如果您感觉超级冒险并且没有其他人使用您的存储库,您可以执行 commit --fixuprebase --interactive 来清理所有内容。详情请见here。 将__pycache__ 添加到~/.gitignore。或者更好的是,只需为您的 repo 签入一个 .gitignore 文件。

【讨论】:

以上是关于从 pythonanywhere 添加/提交时,将 `__pycache__` 保留在我的存储库之外的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Django 项目迁移到 Pythonanywhere

在PythonAnyWhere上部署Django项目

有没有办法从脚本访问 PythonAnywhere CPU Allowance?

将mysql与pythonanywhere一起使用时出现错误4

在 pythonanywhere 中托管时,django python 中的 Cloudinary Image Upload 错误

PYTHONANYWHERE ...我在尝试访问 /admin/default/ 时开始收到“403 FORBIDDEN”错误