Skip to content

Git and GitHub Roadmap

  • Roadmap: https://roadmap.sh/git-github

1. Learn the Basics

  • 1.1 What is Version Control?
  • 1.2 Why use Version Control?
  • 1.3 Git vs Other VCS
  • 1.4 Installing Git Locally

1.5 What is a Repository

  • 1.5.1 git init
  • 1.5.2 git config
  • 1.5.3 Local vs Global Config
  • 1.5.4 Repository Initialization

1.6 Intro and Git Commands

  • 1.6.1 Working Directory
  • 1.6.2 Staging Area
  • 1.6.3 Committing Changes
  • 1.6.4 .gitignore
  • 1.6.5 Viewing Commit History

1.7 Branching Basics

  • 1.7.1 Creating Branch
  • 1.7.2 Renaming Branch
  • 1.7.3 Deleting Branch
  • 1.7.4 Checkout Branch
  • 1.7.5 Merging Basics

2. Basic Collaboration

2.1 GitHub Essentials

  • 2.1.1 Creating Account
  • 2.1.2 GitHub Interface
  • 2.1.3 Setting up Profile
  • 2.1.3.1 Profile Readme
  • 2.1.4 Creating Repositories
  • 2.1.4.1 Private vs Public

2.2 Git Remotes

  • 2.2.1 Cloning Repositories
  • 2.2.2 Managing Remotes
  • 2.2.3 Pushing / Pulling Changes
  • 2.2.4 Fetch without Merge

2.3 Collaboration on GitHub

  • 2.3.1 Forking vs Cloning
  • 2.3.2 Issues
  • 2.3.3 Pull Requests
  • 2.3.3.1 PR from a Fork
  • 2.3.3.2 Collaborators
  • 2.3.3.3 Creating PR
  • 2.3.4 Labelling Issues / PRs
  • 2.3.5 Saved Replies
  • 2.3.6 Mentions
  • 2.3.7 Reactions
  • 2.3.8 Commenting

2.4 Merge Strategies

  • 2.4.1 Fast-Forward vs Non-FF
  • 2.4.2 Handling Conflicts
  • 2.4.3 Rebase
  • 2.4.4 Squash
  • 2.4.5 Cherry Picking Commits

2.5 Best Practices

  • 2.5.1 Commit Messages
  • 2.5.2 Branch Naming
  • 2.5.3 PR Guidelines
  • 2.5.4 Code Reviews
  • 2.5.5 Contribution Guidelines
  • 2.5.6 Clean Git History

2.6 Documentation

  • 2.6.1 Markdown
  • 2.6.2 Project Readme
  • 2.6.3 GitHub Wikis
  • 2.6.4 CITATION files

3. Working in a Team

3.1 GitHub Organizations

  • 3.1.1 Collaborators / Members
  • 3.1.2 Teams within Organization

3.2 GitHub Projects

  • 3.2.1 Project Planning
  • 3.2.2 Kanban Boards
  • 3.2.3 Roadmaps
  • 3.2.4 Automations

3.3 GitHub Discussions

4. Intermediate Git Topics

4.1 Git Stash Basics

4.2 History

  • 4.2.1 Linear vs Non-Linear
  • 4.2.2 HEAD
  • 4.2.3 Detached HEAD
  • 4.2.4 git log options

4.3 Undoing Changes

  • 4.3.1 git revert
  • 4.3.2 git reset
  • 4.3.2.1 --soft
  • 4.3.2.2 --hard
  • 4.3.2.3 --mixed

4.4 Viewing Diffs

  • 4.4.1 Between Commits
  • 4.4.2 Between Branches
  • 4.4.3 Staged Changes
  • 4.4.4 Unstaged Changes

4.5 Rewriting History

  • 4.5.1 git commit --amend
  • 4.5.2 git rebase
  • 4.5.3 git filter-branch
  • 4.5.4 git push --force

4.6 Tagging

  • 4.6.1 Managing Tags
  • 4.6.2 Pushing Tags
  • 4.6.3 Checkout Tags
  • 4.6.4 GitHub Releases

4.7 Git hooks

  • 4.7.1 What and Why?
  • 4.7.2 Client vs Server Hooks
  • 4.7.3 Common Hooks
  • 4.7.3.1 commit-msg
  • 4.7.3.2 post-checkout
  • 4.7.3.3 post-update
  • 4.7.3.4 pre-commit
  • 4.7.3.5 pre-push

4.8 Submodules

  • 4.8.1 What and Why use?
  • 4.8.2 Adding / Updating

4.9 Git Patch

  • 4.9.1 What are these?
  • 4.9.2 Use in Automation

5. GitHub Workflow

5.1 GitHub CLI

  • 5.1.1 Installation and Setup
  • 5.1.2 Repository management
  • 5.1.3 Issue Management
  • 5.1.4 Pull Requests

5.2 GitHub Actions

  • 5.2.1 YAML Syntax
  • 5.2.2 Workflow Triggers
  • 5.2.3 Scheduled Workflows
  • 5.2.4 Workflow Runners
  • 5.2.5 Workflow Context
  • 5.2.6 Secrets and Env Vars
  • 5.2.7 Caching Dependencies
  • 5.2.8 Storing Artifacts
  • 5.2.9 Workflow Status
  • 5.2.10 Marketplace Actions
  • 5.2.11 Usecases

6. Advanced Git Topics

  • 6.1 Git Reflog
  • 6.2 Git Bisect
  • 6.3 Git Worktree
  • 6.4 Git Attributes
  • 6.5 Git LFS

7. GitHub Developer Tools

7.1 GitHub API

  • 7.1.1 REST API
  • 7.1.2 GraphQL API

7.2 Creating Apps

  • 7.2.1 GitHub Apps
  • 7.2.2 OAuth Apps
  • 7.2.3 Webhooks

8. More GitHub Features

  • 8.1 GitHub Sponsors
  • 8.2 GitHub Pages
  • 8.2.1 Deploying Static Websites
  • 8.2.2 Custom Domains
  • 8.2.3 Static Site Generators
  • 8.3 GitHub Gists
  • 8.4 GitHub Packages
  • 8.5 GitHub Codespaces
  • 8.6 GitHub Education
  • 8.6.1 Student Developer Pack
  • 8.6.2 GitHub Classroom
  • 8.6.3 Campus Program
  • 8.7 GitHub Marketplace
  • 8.8 GitHub Security
  • 8.9 GitHub Models
  • 8.10 GitHub Copilot