{{< partial "learn_x_header" >}}
## 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]
### When to Use GitHub?
Use GitHub when you need a source control management system. GitHub is a versatile tool that can meet a wide range of use cases.
## 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.
1. Open [a repository] in your browser.
2. Change github.com to github.dev and [start coding].
3. 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.
### LLM-Ready Repository Access
For AI and LLM applications, you can access GitHub repositories in a text format optimized for language models using [uithub.com]. Simply replace `github.com` with `uithub.com` in any repository URL and add query parameters to control the output format and token limits.
**Example:**
```
https://uithub.com/block/goose?accept=text%2Fplain&maxTokens=50000
```
This service returns a clean, LLM-ready representation of the repository content, making it easy to analyze codebases with AI tools. The `accept=text/plain` parameter ensures plain text output, while `maxTokens` controls the response size.
**Learn more:** [uithub.com documentation](https://uithub.com/openapi)
## 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**
- [Learn and Master Git & GitHub from zero to Hero] - Udemy
- [The Git and GitHub Crash Course] - Udemy
## Related Content
- [What are GitHub Actions and How to Use Them]
- [Skipping workflow runs]
- [GitHub Public Roadmap]
{{< partial "category_footer" >}}
[GitHub public roadmap]: https://github.com/orgs/github/projects/4247/views/1
[github]: https://en.wikipedia.org/wiki/GitHub
[git]: https://en.wikipedia.org/wiki/Git
[user backlash]: https://developers.slashdot.org/story/18/06/04/0935200/microsofts-interest-in-buying-github-draws-backlash-from-developers
[automate everything]: /blog/2020/08/06/a-software-development-philosophy/#h-automate-everything
[a repository]: https://docs.github.com/en/github/creating-cloning-and-archiving-repositories/creating-a-repository-on-github/about-repositories
[creating a new repository]: https://github.com/new
[authentication]: https://docs.github.com/en/github/authenticating-to-github/keeping-your-account-and-data-secure/about-authentication-to-github
[ssh key permission denied (publickey)]: /blog/2019/11/10/setting-ssh-key-permissions/
[github.com: permission denied (publickey)]: /blog/2019/11/23/gitgithub-com-permission-denied-publickey/
[jira]: https://www.atlassian.com/software/jira
[azure boards]: https://azure.microsoft.com/en-us/services/devops/boards/
[github issues]: https://docs.github.com/en/issues/tracking-your-work-with-issues/about-issues
[the github marketplace]: https://github.com/marketplace
[github apps]: https://docs.github.com/en/developers/apps/getting-started-with-apps/about-apps
[cannot be closed until all tasks are complete]: https://github.com/marketplace/task-list-completed
[github actions]: https://docs.github.com/en/actions/creating-actions/about-actions
[aws amplify]: /blog/2020/09/11/learn-aws-amplify/
[terraform]: /blog/2019/11/28/learning-terraform/
[reading dotenv files]: https://github.com/xom9ikk/dotenv
[checking out code]: https://github.com/actions/checkout
[a repository]: https://github.com/jeffabailey/learn/tree/main/tools/github#readme
[start coding]: https://github.dev/jeffabailey/learn-github
[github copilot]: https://copilot.github.com/
[reusable workflows]: https://docs.github.com/en/actions/learn-github-actions/reusing-workflows
[github for dummies]: https://www.amazon.com/GitHub-Dummies-Guthals/dp/1119572673/ref=sr_1_1?dchild=1&keywords=%22github%22&qid=1631156995&s=books&sr=1-1
[building tools with github: customize your workflow]: https://www.amazon.com/Building-Tools-GitHub-Customize-Workflow/dp/149193350X/ref=sr_1_6?dchild=1&keywords=%22github%22&qid=1631156995&s=books&sr=1-6
[building github actions]: https://www.amazon.com/Building-GitHub-Actions-Michael-Heap-ebook/dp/B09647RS8V/ref=sr_1_7?dchild=1&keywords=%22github%22&qid=1631156995&s=books&sr=1-7
[pro git]: https://www.amazon.com/Pro-Git-Scott-Chacon-dp-1484200772/dp/1484200772
[learn and master git & github from zero to hero]: https://www.udemy.com/course/learn-and-master-git-github-from-zero-to-hero
[the git and github crash course]: https://www.udemy.com/course/git-github-crash-course
[what are github actions and how to use them]: https://blog.bitsrc.io/what-are-github-actions-and-how-to-use-them-e89904201a41
[skipping workflow runs]: https://docs.github.com/en/actions/managing-workflow-runs/skipping-workflow-runs