一次在git中忽略文件

时间:2019-01-08 08:04:37

标签: django git heroku

在这个话题上,我非常愚蠢和陌生。我一直在寻找一个明确的答案,但是到目前为止我还没有找到。而且我担心会破坏我的产品服务器文件。所以..

我有一个服务器(用pyhton和Django编写)。我有一个文件会根据环境而变化(settings.py)。

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

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

简而言之,我想避免这种情况。将该文件放入服务器后,我想从更改中忽略它。但是将其置于忽略状态将始终忽略它。有时候,我确实希望将文件中的重要更改推送到所有存储库/环境。

我尝试不提交文件,但是却收到错误消息,指出该文件需要提交或丢弃。

1 个答案:

答案 0 :(得分:2)

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

使用Heroku config varsDJANGO_SETTINGS_MODULE更改为my_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