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ā€¦

Nervous laughter

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.

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).

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:

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!

šŸ‘‰ Next: Learning Linux šŸ‘ˆ Previous: Learning Ruby šŸš€ Back to top