JSum
JSum

Reputation: 609

Git db.sqlite and wsgi.py file keep reverting on pull

I have a python/django/wagtail project that I built locally using db.sqlite3. I did an initial push with everything to github, and then pulled it to my server. I made a change to the wsgi file and did some work in the cms which updated the database.

I made some changes locally. I changed my .gitignore to exclude db.sqlite3 and wsgi.py. git add ., git commit, git push origin master. then, on the server, sudo git pull origin master. db.sqlite3 reverts back to before I made the cms changes and the wsgi.py reverts back to pointing to my dev settings.

I made the changes back to the cms but now I need to do another update when I have made even more cms changes and I do not want to overwrite the database again. wsgi.py is a small fix but still. My .gitignore

# Created by https://www.toptal.com/developers/gitignore/api/django
# Edit at https://www.toptal.com/developers/gitignore?templates=django

### Django ###
*.log
*.pot
*.pyc
__pycache__/
local_settings.py
db.sqlite3
db.sqlite3-journal
media
wsgi.py

# If your build process includes running collectstatic, then you probably don't need or want to include staticfiles/
# in your Git repository. Update and uncomment the following line accordingly.
# <django-project-name>/staticfiles/

### Django.Python Stack ###
# Byte-compiled / optimized / DLL files
*.py[cod]
*$py.class

# C extensions
*.so

# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
pip-wheel-metadata/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST

# PyInstaller
#  Usually these files are written by a python script from a template
#  before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec

# Installer logs
pip-log.txt
pip-delete-this-directory.txt

# Unit test / coverage reports
htmlcov/
.tox/
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
*.py,cover
.hypothesis/
.pytest_cache/
pytestdebug.log

# Translations
*.mo

# Django stuff:

# Flask stuff:
instance/
.webassets-cache

# Scrapy stuff:
.scrapy

# Sphinx documentation
docs/_build/
doc/_build/

# PyBuilder
target/

# Jupyter Notebook
.ipynb_checkpoints

# IPython
profile_default/
ipython_config.py

# pyenv
.python-version

# pipenv
#   According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
#   However, in case of collaboration, if having platform-specific dependencies or dependencies
#   having no cross-platform support, pipenv may install dependencies that don't work, or not
#   install all needed dependencies.
#Pipfile.lock

# PEP 582; used by e.g. github.com/David-OConnor/pyflow
__pypackages__/

# Celery stuff
celerybeat-schedule
celerybeat.pid

# SageMath parsed files
*.sage.py

# Environments
#.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/
wow/

# Spyder project settings
.spyderproject
.spyproject

# Rope project settings
.ropeproject

# mkdocs documentation
/site

# mypy
.mypy_cache/
.dmypy.json
dmypy.json

# Pyre type checker
.pyre/

# pytype static type analyzer
.pytype/

# End of https://www.toptal.com/developers/gitignore/api/django

Upvotes: 1

Views: 708

Answers (1)

gasman
gasman

Reputation: 25352

Adding a line to .gitignore does not stop that file from being tracked by git - it just means that changes to it won't show up in git status / git diff and similar. To remove it from git, you need to run git rm name-of-file . However, this will also delete the actual file, so to avoid losing data, the best approach is:

  • make a copy of db.sqlite3
  • git rm db.sqlite3
  • move your copy of the file back to the original filename
  • commit the change to git

Then, on your live server:

  • make a copy of db.sqlite3
  • git pull
  • move your copy of the file back to the original filename

Upvotes: 1

Related Questions