I did what Albert & Rich did - Don't version .ipynb files (as these can contain images, which gets messy). Instead, either always run ipython notebook --script
or put c.FileNotebookManager.save_script = True
in your config file, so that a (versionable) .py
file is always created when you save your notebook.
To regenerate notebooks (after checking out a repo or switching a branch) I put the script py_file_to_notebooks.py in the directory where I store my notebooks.
Now, after checking out a repo, just run python py_file_to_notebooks.py
to generate the ipynb files. After switching branch, you may have to run python py_file_to_notebooks.py -ov
to overwrite the existing ipynb files.
Just to be on the safe side, it's good to also add
*.ipynb
to your .gitignore
file.
Edit: I no longer do this because (A) you have to regenerate your notebooks from py files every time you checkout a branch and (B) there's other stuff like markdown in notebooks that you lose. I instead strip output from notebooks using a git filter. Discussion on how to do this is here.