Prepare your Notebooks to be pushed to Git
Integrating Jupyter Notebooks to a git workflow.
(I highly recommend installing this into a conda environment) To install the extension and enable it just run the following commands:
pip install jupygit jupyter serverextension enable --py jupygit --sys-prefix jupyter nbextension install --py jupygit --sys-prefix jupyter nbextension enable --py jupygit --sys-prefix
I've been working with Jupyter Notebooks for a while, and I always felt something dying inside me everytime I pushed a massive file to GitHub, only to have it overwritten by my next huge commit causing me to have unreadable diffs. I decided to create this extension that, as I previously stated, is a hack.
How? (and usage)
Let's say you are working on a file called
Awesome.ipynb. What this extension will do once you press shiny new git button on your Notebook is:
- Shows a nice modal with an encouraging message.
- Renames your current file to
Awesome-jupygit___.ipynbusing Jupyter's API so that your kernel stays alive and you do not lose any work, we'll call this the "dirty" file.
- Adds the pattern
*-jupygit___.ipynbto your .gitignore file, so that your "dirty" file does not show up as a new file in your git repository.
- Creates a copy of
Awesome-jupygit___.ipynbbut with the original name
Awesome.ipynb, this copy is clean, no outputs and no
execution_counts, we'll call this the "clean" file.
- Now is your turn to commit
Awesome.ipynb, the "clean" file to source control!
Are you done pushing things to Git? Now close the dialog and this will happen:
- Delete the file
Awesome.ipynb(do not worry! your kernel and work is safe in the "dirty" file).
Awesome.ipynbso that you can resume your work where you left it before being a good human and using source control.
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.