From the docs: "nbdime provides tools for diffing and merging Jupyter notebooks."
It includes both graphical diff and merge tools, command line diff and merge tools, VCS integration for git (so git uses the nbdime diff and merge for notebooks), etc.
Might be worth looking into if that is what you are looking for.
I'm not sure how others work with this stack, so there is likely tooling I don't know about. I'd love to hear suggestions.
! git commit add ./my_file.ipnb
(You used to be able to run ipython notebook --script)
To be fair, wasn't Jupyter designed to be an IDE - experiment with code, make tweaks and get the final version out in a text editor - rather than a repository of production-ready code?