Django 我在我的.git文件中有settings.py,但当我执行git pull时,它仍然会更改它

Django 我在我的.git文件中有settings.py,但当我执行git pull时,它仍然会更改它,django,git,bitbucket,Django,Git,Bitbucket,对于我的本地项目和我的实时项目(Bitbucket repo),我有不同的settings.py。因此,我将settings.py添加到我的.gitignore中,这样当我对其中一个文件进行更改时,当我的git被拉或推时,它们不会被发送到另一个repo 然而,我只是从本地repo中执行了一个git pull,它进行了合并,并将settings.py文件更改为Bitbucketsettings.py 发生了什么事 编辑-忽略文件: /lib /media .env /include /report

对于我的本地项目和我的实时项目(Bitbucket repo),我有不同的
settings.py
。因此,我将
settings.py
添加到我的
.gitignore
中,这样当我对其中一个文件进行更改时,当我的git被拉或推时,它们不会被发送到另一个repo

然而,我只是从本地repo中执行了一个
git pull
,它进行了合并,并将
settings.py
文件更改为Bitbucket
settings.py

发生了什么事

编辑-忽略文件:

/lib
/media
.env
/include
/reports
.DS_Store
*.pyc
celerybeat-schedule.db
__pycache__/
db.sqlite3
log.django
settings.py
static/
/static

如果您的repo中已经存在settings.py文件,将其添加到.gitignore不会阻止提取该文件。唯一的办法是将其从回购协议中完全删除


但这样做是错误的。不应从版本控制中排除整个设置文件。在开发和生产之间,几乎所有的设置都将保持不变;有很多技术可以维护这些不同的设置,从单独的本地设置文件到使用环境变量。

使
git
停止跟踪
设置。py
完全包括以前的提交。

git
不会忽略在将规则添加到
之前已跟踪的文件。gitignore
文件可忽略该文件

在这种情况下,必须首先使用以下命令取消跟踪文件:
git rm--cached

因此,如果您试图在初始提交后忽略此文件,请运行以下命令:
git rm--cached settings.py
,这样您就可以开始了


使
git
停止跟踪
settings.py中除初始提交之外的未来更改。


请参阅答案。

我想您已经将settings.py文件推到了remote。所以当你从遥控器上拉车的时候。即使您已将此文件添加到.gitignore,您的本地文件也将更改。git将继续跟踪任何已经被跟踪的文件

解决此问题的简单方法。 第一:

gitrm-r——缓存。
git添加。

然后:

git commit-am“删除被忽略的文件”


有关更多信息,请参阅答案。

您可以使用。它会将您当前的settings.py作为隐藏,然后您可以执行git pull。一旦拉取完成,您就可以执行git stash apply,这将恢复所有隐藏的文件,如settings.py,并在任何内容发生更改时将其合并。

显示gitignore文件添加到我的编辑中。
.gitignore
的目的不是阻止我的问题发生吗?另外,环境变量如何解决这个问题?我在生产设置中使用了环境变量,但这些变量存储在远程服务器上的一个隐藏的
.env
文件夹中(使用python decouple)-
.env
在我的
中。gitignore
因此不会离开服务器。不,关键是首先不要提示您将文件添加到git中。如果您已经在环境变量中设置了生产设置,我不明白您为什么要将整个文件从版本控制中排除。出于安全原因,我不想让我的环境变量值存在于本地文件中。不,确实如此。这就是为什么在本地开发中使用本地值,而在生产中使用生产值。对于我的AWS S3密钥之类的东西,没有等效的本地值。只是尝试了一下,结果是一样的-在发出我列出的那些命令之前,在我执行
git pull
之后仍然拉取
settings.py
。您需要将settings.py文件添加到.gitignore文件。因此,当您发出git add.
时,settings.py将不再被暂存。