I noticed that Jessica Hamrick also did a concept map on git commit, so it might be useful to compare and contrast these two. (Also see Evan Bianco’s Using Git and Anne Moroney’s concept map for contributing to github.)
Specific issues I considered when making this:
- I wanted to capture the concept that a branch is just a pointer to a commit, which made it much easier for me to understand how branches work in git. Granted, this took advantage of pre-existing scaffolding in my brain about what a pointer is, so it might not be as useful to novices.
- The concept of staged vs. unstaged changes has always been hard for me to explain to novices. I added stage as a noun in this concept map, hoping that it might help aid in a user’s conceptual understanding.
- Another key concept I wanted to convey is the notion that git repositories are everywhere, not just on Github. I might only find this useful because I come from a centralized VCS background, but I’ve observed that even those who have never used a centralized VCS before are puzzled when
git commit
doesn’t actually send anything to Github. - I also wanted the concept map to convey what makes git different from Github.
- A number of concepts in this map are ones that are covered by Scott Chacon’s Git Internals chapter of his Pro Git book. While the material of that chapter is advanced, I feel that the concepts conveyed in it actually demystified a lot of git for me and revealed a relatively simple set of concepts that are obscured by the git command-line program. Understanding those concepts made it much easier for me to understand how to use git to my advantage, and also get myself out of weird situations I’d inadvertently put myself into.