Welcome to the ultimate guide to mastering Git and GitHub! This repository is designed to be a comprehensive, production-quality learning resource for developers of all levels. Whether you're a complete beginner or looking to solidify your understanding of industry-standard workflows, this tutorial has you covered.
New to Git? Start here for a 10-minute introduction to the basics!
This guide is designed for a wide range of individuals, from complete novices to experienced developers looking to refine their skills.
- Absolute Beginners: If you've never used version control before, this tutorial will take you from the ground up, starting with the most fundamental concepts and commands.
- Students & Aspiring Developers: This is a portfolio-ready project that will help you build a solid foundation in the tools used by every professional software team.
- Experienced Developers: If you're looking to refresh your knowledge, learn best practices, or master advanced features like interactive rebasing and GitFlow, this tutorial provides a structured path to do so.
- Teams & Engineering Managers: This repository can be used as a standardized training resource to onboard new hires and ensure your team is aligned on industry-standard workflows.
- Beginner-Friendly: Starts with the absolute basics and builds up complexity gradually.
- Industry-Aligned: Focuses on the workflows and best practices used in professional development teams.
- Structured for Self-Learning: Each section builds on the previous one, with clear explanations and hands-on exercises.
- Portfolio-Ready: By completing this tutorial, you will have a solid project to showcase your understanding of modern version control.
- 01-introduction/01-what-is-version-control.md
- 01-introduction/02-what-is-git.md
- 01-introduction/03-git-vs-github.md
- 02-getting-started/01-installing-git.md
- 02-getting-started/02-configuring-git.md
- 02-getting-started/03-your-first-repository.md
- 03-basic-commands/01-the-staging-area.md
- 03-basic-commands/02-making-commits.md
- 03-basic-commands/03-viewing-history.md
- 03-basic-commands/04-ignoring-files.md
- 04-branching-and-merging/01-what-are-branches.md
- 04-branching-and-merging/02-merging-branches.md
- 04-branching-and-merging/03-merge-conflicts.md
- 05-remote-repositories/01-working-with-remotes.md
- 05-remote-repositories/02-fetching-and-pulling.md
- 05-remote-repositories/03-pushing-code.md
- 05-remote-repositories/04-github-pull-requests.md
- 06-advanced-git/01-interactive-rebasing.md
- 06-advanced-git/02-merging-vs-rebasing.md
- 06-advanced-git/03-cherry-picking.md
- 06-advanced-git/04-reset-and-revert.md
- 07-workflows-and-best-practices/01-feature-branch-workflow.md
- 07-workflows-and-best-practices/02-gitflow-overview.md
- 07-workflows-and-best-practices/03-writing-good-commit-messages.md
- 07-workflows-and-best-practices/04-keeping-a-clean-history.md
- 07-workflows-and-best-practices/05-protected-branches.md
- 08-extras/01-troubleshooting-guide.md
- 08-extras/02-common-interview-questions.md
- 08-extras/03-git-cheat-sheet.md
Contributions are welcome! Please see our CONTRIBUTING.md for details on how to get started.
