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