Sharing your Jupyter notebook

One neat way of sharing your research workflow - whether that is your data cleaning process, the statistical modelling that you have applied to your data set, or how you have visualised your results - is through Jupyter notebooks.

Working with sensitive data may, however, create barriers to sharing your Jupyter notebook: you do not want to commit a Jupyter notebook containing sensitive data to GitHub.

You can get around this hurdle by manually clearing your notebook’s output before each Git commit you do. This process is, however, time-consuming, cumbersome and - most importantly - extremely error-prone. You only need to forget to clear the output once to inadvertently expose your data. Another, much more efficient (and failsafe!) way of doing this is by using nbstripout.


nbstripoutis a utility that - when used as a git filter or pre-commit hook - automatically strips the Jupyter (or IPython/Zeppelin) notebook output before Git even gets the chance to see it. In other words, it simulates the Clear All Output procedure in the Jupyter notebook user interface.

Installing nbstripout

The latest version of nbstripout can be installed from PyPI (The Python Package Index) using the command pip install --upgrade nbstripout. If you are using Anaconda, you can install nbstripout via the conda package manager: conda install -c conda-forge nbstripout.

Setting up the git filter and attributes

Once nbstripout is installed, you need to add it to your local Git repository. Start by creating a new repository or navigating to one that you are already using. Once there, add nbstripout using the command nbstripout --install.

You can check that nbstripout has successfully been applied as a filter by running the command cat .git/config, or checking git attributes by running the commandcat .git/info/attributes.

Removing the git filter and attributes

If you decide that you would like to remove nbstripout, simply run nbstripout --uninstall whilst in the repository.

Installing nbstripout globally

nbstripout is generally installed in one local Git repository at a time, so that you can control when it is applied as a filter.

However, if all of your notebooks deal with sensitive data, it might be a good idea to install nbstripout globally across all of your Git repositories. This way, no notebooks risk slipping under the radar.

To install nbstripout globally, run the command: nbstripout --install --global