我的本地项目和我的直播项目(Bitbucket repo)有不同的settings.py
。所以我已将settings.py
添加到.gitignore
,所以当我对任一文件进行更改时,当我的git被拉或推时,它们不会被发送到其他仓库。
但是,我刚刚从我的本地仓库中做了git pull
- 它进行了合并,并将settings.py
文件更改为Bitbucket settings.py
。
发生了什么事?
编辑 - Gitignore文件:
/lib
/media
.env
/include
/reports
.DS_Store
*.pyc
celerybeat-schedule.db
__pycache__/
db.sqlite3
log.django
settings.py
static/
/static
答案 0 :(得分:1)
如果您的仓库中已有settings.py文件,则将其添加到.gitignore不会阻止文件被拉出。唯一的方法是将它从回购中完全删除。
但这是错误的做法。您不应该从版本控制中排除整个设置文件。开发和生产之间的几乎所有设置都保持不变;有很多技术可用于维护那些不同的技术,从单独的local_settings文件到使用环境变量。
答案 1 :(得分:0)
要使git
完全停止跟踪settings.py
,包括之前的提交。
git
文件以忽略它之前, .gitignore
不会忽略已跟踪的文件。
在这种情况下,必须先使用以下命令取消跟踪文件:git rm --cached <filename>
。
因此,如果您在初始提交后尝试忽略此文件,请运行此命令:git rm --cached settings.py
,您应该很高兴。
要使git
停止跟踪settings.py
中的未来更改,除了初始提交。
参考this回答。
答案 2 :(得分:0)
我认为您已经将 settings.py 文件推送到远程。所以当你从遥控器拉。即使您已将此文件添加到.gitignore,您的本地文件也会更改。 git将继续跟踪任何已被跟踪的文件。
解决此问题的简单方法。
第一:
git rm -r --cached .
git add .
然后:
git commit -am "Remove ignored files"
有关详情,请参阅this answer。
答案 3 :(得分:0)
您可以使用git stash。它会将您当前的settings.py保存为隐藏文件,然后您可以执行git pull。然后,一旦完成提取,就可以执行git stash的应用,这将还原所有隐藏的文件(如settings.py),并在发生任何更改的情况下将其合并。