Learning Git
My favorite resources
January 18, 2023 Ā· Felipe Vogel Ā·When youāre making a pull request, do you ever realize your Git branch has become a massive pile of disordered and unrelated changes, but then you donāt do anything about it because youāre afraid of making an even worse mess by fooling around with Git commands that you donāt understand or even know how to undo?
Me? No, of course notā¦
Anyway, Iāve decided to improve my Git skills, and I thought Iād share my favorite learning resources that I found.
My favorite Git learning resources
These are excerpted from the new āGitā section of my āLearn Rubyā list. (Yeah I know, Git is not part of Ruby. Itās just that I didnāt want to create a separate list for general programming skills.) I keep the list up to date, so unless youāre reading this in January 2023, you should check there in case Iāve found more Git resources.
I made the Git list by (1) scouring the Web for recommended resources, then (2) trying out each one to see if it would be worth going through to the end. In case youāre curious about which resources didnāt make the cut, hereās the commit where they are removed.
(Just so you know, Iām proud of that commit. Originally I made separate commits to remove each unwanted resource, interspersed with other unrelated commits. But at the end I used my new Git skills to do an interactive rebase, squashing a bunch of commits into one and re-ordering the unrelated commits to an earlier point in the branch š)
Without further ado, here are my favorite Git learning resources so far. Theyāre all free except for the last one.
- Basics:
- Intermediate/advanced
Right now Iām working through Git Katas. After that, and before going through the intermediate/advanced Git resources, I might spend time on other fundamentals (see below).
Git-related VS Code extensions
Until recently I used the GitLens VS Code extension, but then I realized that its only features that I care about are either finnicky (popup-on-hover Git blame), needlessly complicated (browsing a fileās history), or behind a paywall (graph visualizer).
So I replaced GitLens with these smaller extensions:
- Git History Diff
- Git Blame to quickly see the current lineās blame in the status bar.
- Git Graph for when your repo is complex enough that
git log --oneline --graph
is hard to decipher.
Reflections on the fundamentals
Besides the āGitā section, Iāve added three other sections under a āFundamental toolsā heading:
Iām really enjoying learning these fundamentals. I love Ruby, but itās nice to focus my learning on something else for a changeāthough Iām still watching Ruby screencasts whenever my wrists need a break.
In fact, Iām having so much fun that Iām tempted to expand the āFundamental toolsā section, but itās probably best to pick a few technologies and go deep into each, rather than throwing a bunch more stuff in there and making it less likely that Iāll go deep into anything.
So, as a compromise, I have a separate āExpanding my horizonsā section for those times in the future when I want to take a dive into something outside of Ruby or frontend skills.
As I write this, Iām reminded of a Thoughtbot blog post about āevergreen skillsā (similar to what Iāve called āfundamental toolsā) which is worth a read.
I hope my explorations of Git and other fundamentals has been as rewarding for you as it has been for me. Happy learning!