django - 在 git 中忽略文件一次
问题描述
我在这个话题上非常愚蠢和新。我已经寻找了一个明确的答案,但到目前为止我还没有找到。而且我害怕破坏我的产品服务器文件。所以..
我有一个服务器(用 pyhton 和 Django 编写)。我有一个根据环境(settings.py)更改的文件。
我有 3 个环境的 3 个布尔变量在本地计算机上运行时,我正在相应地更改此文件,以及开发服务器和产品服务器(都托管在 Heorku 中)。
我sourcetree
用来管理我的 git。当我想在开发服务器中测试我的代码时,我将我的代码从我的 bitbucket repo 'dev' 分支推送到我的 heroku git DevServer。但后来我settings.py
的也被推送了,所以我需要将它配置回开发服务器配置。然后回到本地开发,然后再次到开发服务器,然后到生产服务器 - 分配单个文件推送,在我看来,我可以避免。当我从开发合并到主时,此settings.py
文件将再次更改,我需要再次更新它以匹配生产环境。
长话短说,我想避免这种情况。一旦我把这个文件放在服务器中,我想从更改中忽略它。但是将其置于忽略状态将始终忽略它。有时我确实想将文件中的重要更改推送到所有存储库/环境..
我试图不提交该文件,但我收到了需要提交或丢弃该文件的错误。
解决方案
提交文件的两个版本:my_site/dev_settings.py
和my_site/prod_settings.py
使用Heroku 配置变量更改DJANGO_SETTINGS_MODULE
为my_site.dev_settings
my_site.prod_settings
或者(可能是一个更好的主意,如果文件包含秘密 - 它通常会 - 不应该提交):
将可变或秘密值设置settings.py
为环境变量:
SECRET_KEY = os.environ.get('MY_SITE_SECRET_KEY', 'dummy')
DEBUG = os.environ.get('MY_SITE_DEBUG') == 'True'
然后设置MY_SITE_SECRET_KEY
和MY_SITE_DEBUG
作为 Heroku 配置变量。
最后,你的问题的字面答案,虽然不是我为你的场景建议的路径:
git update-index --skip-worktree my_site/settings.py
将阻止 Git 注意到您的文件中的更改,直到您发出
git update-index --no-skip-worktree my_site/settings.py