The Basics
GitHub is a hosting platform for the Git source control management system. Microsoft purchased it in 2012, and despite some user backlash, it continues to grow and improve. The GitHub website provides a free user account with generous free usage plans.
According to the Jetbrains state of the developer ecosystem for 2021, GitHub is the most used version control system. It’s a safe bet to pick GitHub for your source control management systems, and learning GitHub is an excellent time investment.
Primary Use Cases
- A Git server for your source code
- Code quality control
- A source of example code
- Issue management
- A code build server
- Social networking with software developers
- Workflow automation; automate everything
Repositories
A central concept within GitHub is a repository or, more specifically, Git repositories. It’s possible to use GitHub as nothing more than a git server by creating a new repository. Once created, the app will walk you through clone your repository to your local machine.
Authentication for your repository works with various methods, from SSH keys to OAuth. I like to use the SSH key authentication by adding my local key in the developer settings. If you’re creating a new SSH key, be sure to avoid the SSH Key Permission denied (publickey), and github.com: Permission denied (publickey) errors.
Once you have cloned your repository, you’re in business. Use Git like you usually would and push your changes up to GitHub early and often.
Issues
Every team needs issue management. While many companies prefer to use Jira or Azure Boards tools for issue management, GitHub issues will work well for software development teams. The main advantage of using GitHub issues is the integration with apps available in the GitHub Marketplace.
Apps
GitHub apps are a starting point when the GitHub features in the documentation don’t fit your use cases. Using GitHub apps, you can modify how GitHub works in novel ways. It’s possible to alter the workflow when creating issues such that issues cannot be closed until all tasks are complete. The sky’s the limit with apps; you can automate pretty much any workflow and save yourself some time.
Actions
GitHub actions allow you to deploy your code to a multitude of destinations. Do you need to deploy your code to an AWS Amplify? Do you need to deploy resources using Terraform? GitHub actions have you covered by numerous GitHub actions like reading dotenv files or simply checking out code.
Using GitHub actions is an absolute pleasure with an approachable design that makes creating build code pipelines, dare I say, fun. In a few minutes, I developed a helpful pipeline to automate code deployment with a few lines of code. It’s truly a wonder to behold.
Killer Features
Now that you have an overview, here are some killer features that might make your eyes bug out.
Visual Studio Code
It’s possible to open up visual studio code in a browser by following these steps.
- Open a repository in your browser.
- Change github.com to github.dev and start coding.
- Profit?!
GitHub Copilot
If you’re tired of typing the same code over and over, GitHub Copilot has you covered. It’s a code completion feature that uses AI to give you intelligent suggestions.
Reusable Workflows
Reusable workflows will keep your build pipelines DRY. I was planning on refactoring some workflows to avoid code duplication. I didn’t know this feature was in beta so I’m stoked that I have a path to code tidiness.
Learn GitHub - Beyond the Basics
- Books
- GitHub For Dummies - Amazon
- Building Tools with GitHub: Customize Your Workflow - Amazon
- Building GitHub Actions - Amazon
- Pro Git - Amazon
- Videos
Related Content
Other Learning
- How Do I Learn Effectively?
- Learn 3D Graphics
- Learn Amazon Athena
- Learn Asymptotic Notations
- Learn AWS Amplify
- Learn Color Theory
- Learn Data Visualization
- Learn Design Systems
- Learn ECS
- Learn GitHub
- Learn How To Prioritize
- Learn Java
- Learn Java Coding Challenges
- Learn JavaScript
- Learn jq
- Learn Kubernetes
- Learn Python
- Learn Rendanheyi
- Learn SignalFx
- Learn Software Architecture
- Learn Software Design Patterns
- Learn Structurizr
- Learn systemd
- Learn Terraform