首页 > 解决方案 > 在 git 中忽略文件一次

问题描述

我在这个话题上非常愚蠢和新。我已经寻找了一个明确的答案,但到目前为止我还没有找到。而且我害怕破坏我的产品服务器文件。所以..

我有一个服务器(用 pyhton 和 Django 编写)。我有一个根据环境(settings.py)更改的文件。

我有 3 个环境的 3 个布尔变量在本地计算机上运行时,我正在相应地更改此文件,以及开发服务器和产品服务器(都托管在 Heorku 中)。

sourcetree用来管理我的 git。当我想在开发服务器中测试我的代码时,我将我的代码从我的 bitbucket repo 'dev' 分支推送到我的 heroku git DevServer。但后来我settings.py的也被推送了,所以我需要将它配置回开发服务器配置。然后回到本地开发,然后再次到开发服务器,然后到生产服务器 - 分配单个文件推送,在我看来,我可以避免。当我从开发合并到主时,此settings.py文件将再次更改,我需要再次更新它以匹配生产环境。

长话短说,我想避免这种情况。一旦我把这个文件放在服务器中,我想从更改中忽略它。但是将其置于忽略状态将始终忽略它。有时我确实想将文件中的重要更改推送到所有存储库/环境..

我试图不提交该文件,但我收到了需要提交或丢弃该文件的错误。

标签: djangogitheroku

解决方案


提交文件的两个版本:my_site/dev_settings.pymy_site/prod_settings.py

使用Heroku 配置变量更改DJANGO_SETTINGS_MODULEmy_site.dev_settingsmy_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_KEYMY_SITE_DEBUG作为 Heroku 配置变量。


最后,你的问题的字面答案,虽然不是我为你的场景建议的路径:

git update-index --skip-worktree my_site/settings.py

将阻止 Git 注意到您的文件中的更改,直到您发出

git update-index --no-skip-worktree my_site/settings.py

推荐阅读