Git
In 2025, I was asked to include something about git in this tutorial.
It’s simple. This web site has an excellent free on-line book on the subject:
If you ever have any questions about git, just consult the book.
That’s it.
Well, that’s not it. I should say more, if only to justify my salary.
The above sections contain a small subset of the material presented in the Git book, but from a different perspective than the book’s:
If your only experience in programming is using Python within a Jupyter notebook, it might not be clear why anyone would use a software versioning tool. I present my answer to that question.
I review commands and procedures that I think you’re most likely to use in physics research.
A lot of assumptions
In these sections, I make a lot of assumptions about what you may know about programming and software management. Let me know if my assumptions are correct. I’ll fix next year’s course with what the students actually know, as opposed to what I assume they know.
In case it’s not obvious
I’m only going to discuss using git on the UNIX command line. There are Jupyter extensions that can work with git, but:
I think Jupyter notebooks are not a good candidate for management with git, for reasons I’ll discuss later;
Adding extensions to Jupyter is well beyond the scope of this tutorial.

Figure 141: https://xkcd.com/1597/ by Randall Munroe.