Great Free Resources to Learn GitHub
Background
Source control used to be a scary, odd thing for me back in college and early in my career. Branching, merging, commits... all the buzzwords I remember from my early days dealing with Microsoft Team Foundation Server (TFS) and Subversion. Admittedly, I never felt like I spent the time required to understand how it all worked. Fast forward to mid-2017, when a group of us within VMware needed to share some of our tips and tricks with the broader VMware community. The EUC-Samples repository was born on GitHub, and my journey like Alice down the rabbit hole began. Over the years, as we've encouraged participation and knowledge sharing amongst those within the community, I still see a hesitation to learn git/GitHub and contribute to the repository.
My Inspiration For This Post
Before 2017, I was YOU! It's been a personal journey to feel comfortable learning to use GitHub and sharing with the VMware community. I've come across numerous examples of blog posts, training videos, and more. Yet, I felt it time to talk through the specific tools that have helped me on my journey. I hope you find these tools equally valuable and find the confidence to share your knowledge and experience with the community.
Getting Started with GitHub
This year's Microsoft Ignite conference had a few great resources to introduce GitHub to new contributors within the community. Before checking them out, I recommend watching the video "What is Version Control" to understand the problem GitHub (or git in general) is solving. My inspiration for listing the following videos are that they're short and to the point. Additionally, they cover using GUI tools. These videos get you the knowledge you need to start working with Github repositories and contributing to basic projects.
In my own experience and interactions, folks new to GitHub don't want to dive straight into the command line to start interacting with repositories. I've tried to lean more towards videos that explain using visuals and GUI tools.
- Github for Beginners: https://myignite.microsoft.com/sessions/efbd16c0-6f0e-427e-aee6-e8be6e5096ec?source=sessions
- Intro to GitHub: https://myignite.microsoft.com/sessions/b1fd3357-8e0e-45e2-bf95-f5f115d6406b?source=sessions
- VS Code: https://myignite.microsoft.com/sessions/23dabb00-fb0b-4df0-bfbf-b87fbb98009a?source=sessions
Getting Better with GitHub
As you grow comfortable cloning repos and generating commits to the repo, you'll need to start digging into pull requests and branching/merging. Something I learned (admittedly) late was the value of branches in the code creation process. Branches provide a useful way for you to keep a local copy that mirrors the repo, and then selectively test different changes by commiting against different branches. Personally, I've found branches a useful way for me to contribute changes back to community projects as it let's me isolate very specific (feature or bug-related) changes and then submit the changes to the upstream repo via pull requests.
- Version Control Workflow Cheat Sheet: https://www.git-tower.com/learn/cheat-sheets/vcs-workflow/
- Comparing Version Control Workflows: https://www.atlassian.com/git/tutorials/comparing-workflows
- Git First Aid Kit (Videos): https://www.git-tower.com/learn/git/first-aid-kit/
- Working with GitHub in VS Code: https://code.visualstudio.com/docs/editor/github
Visual Studio Code Help
- VS Code Cheat Sheet: https://www.git-tower.com/learn/cheat-sheets/vscode/
- Getting Started with Visual Studio Code: https://code.visualstudio.com/docs/introvideos/basics
Tools for GitHub and Scripting
Personally, I made the switch to Visual Studio Code shortly after it was first introduced. The developer community is constantly adding new features (via extensions), and I find the code language support is awesome for much of what I do (scripting for system administration). That said, here's a list of the smattering of tools I use for GitHub and working with repositories/content:
- Visual Studio Code - unparalleled feature set (syntax highlighting, linting, built-in git client, and markdown preview)
- Tower Git Client - excellent, visual git client
- Working Copy -- git client for iPadOS
- iA Writer -- excellent markdown author tool for iPadOS
Wrapping Up
Have you found any great resources for learning about Git & GitHub? I'd love to add them! Leave a comment below and let me know!