Jupyter notebooks and collaboration
Git has been almost universally adopted for collaborating on code, as Jupyter notebooks have been for data exploration and interactive modelling. Put them together and you run into a mismatch: Git is built for line-based plain text, while notebooks are JSON files that often include large output blobs and embedded images.
This can make notebook changes awkward to review. Small edits can produce noisy diffs (execution counts and output cells), which gets in the way of incremental staging, small commits, and code review.
At PyCon UK, I gave a talk on tools and practices for using Jupyter notebooks with Git on machine learning projects, which you can watch below.
I start with built-in Git features like incremental staging to keep changes focused, then show a simple way to clear notebook output cells before you commit.
I then introduce nbdime, which adds diff and merge support for Jupyter notebooks, and show how to install and configure it to work with Git.