Chapter 1: Introduction to Version Control
- Lesson 1: What is Version Control?
- Lesson 2: Types of Version Control Systems (VCS)
- Lesson 3: Centralized vs. Distributed VCS
- Lesson 4: Comparing Popular VCS (e.g., SVN, Mercurial) to Git
- Lesson 5: Importance of Version Control in DevOps
Chapter 2: Getting Started with Git
- Lesson 1: What is Git and Why Use It?
- Lesson 2: History and Evolution of Git
- Lesson 3: Key Features of Git
- Lesson 4: Installing Git on Different Platforms
- Lesson 5: Configuring Git (username, email, editor)
- Lesson 6: Setting Up Git in an IDE (e.g., VS Code, IntelliJ)
Chapter 3: Git Basics
- Lesson 1: Initializing a Git Repository
- Lesson 2: Git File Lifecycle: Tracked, Untracked, Staged, and Committed
- Lesson 3: Creating, Cloning, and Deleting Repositories
- Lesson 4: Adding, Modifying, and Removing Files
- Lesson 5: Writing Commit Messages: Best Practices
- Lesson 6: Viewing and Understanding Commit History
Chapter 4: Branching and Merging
- Lesson 1: What are Branches?
- Lesson 2: Creating, Switching, and Deleting Branches
- Lesson 3: Branching Strategies in DevOps
- Lesson 4: Merging Branches: Fast-Forward vs. Recursive Merge
- Lesson 5: Resolving Merge Conflicts
- Lesson 6: Cherry-Picking Commits
Chapter 5: Git Remote Repositories
- Lesson 1: Introduction to Remotes
- Lesson 2: Adding, Removing, and Fetching Remote Repositories
- Lesson 3: Pushing and Pulling Changes
- Lesson 4: Working with Git Hosting Services (GitHub, GitLab, Bitbucket)
- Lesson 5: Using SSH Keys for Authentication
- Lesson 6: Forking and Collaborating on Remote Repositories
Chapter 6: Advanced Git Operations
- Lesson 1: Stashing Changes
- Lesson 2: Rebasing | When and Why to Use It
- Lesson 3: Interactive Rebase for Commit History Management
- Lesson 4: Reset, Revert, and Checkout: Differences and Use Cases
- Lesson 5: Squashing Commits for Clean Histories
- Lesson 6: Tagging and Annotated Tags
- Lesson 7: Managing Submodules
Chapter 7: Collaborative Workflows
- Lesson 1: Understanding Git Workflows (e.g., Git Flow, GitHub Flow)
- Lesson 2: Code Reviews and Pull Requests
- Lesson 3: Handling Code Conflicts in Teams
- Lesson 4: Git Hooks: Automating Tasks
- Lesson 5: Maintaining a Clean Repository with .gitignore
Chapter 8: Git Tools and Optimization
- Lesson 1: Using Git Bisect for Debugging
- Lesson 2: Customizing Git with Aliases
- Lesson 3: Exploring Git Logs and Statistics
- Lesson 4: Using Git GUI Tools (e.g., Sourcetree, GitKraken)
- Lesson 5: Performance Optimization in Large Repositories
Chapter 9: Security and Best Practices
- Lesson 1: Managing Credentials Securely
- Lesson 2: Signing Commits with GPG
- Lesson 3: Removing Sensitive Data from Repositories
- Lesson 4: Protecting Branches with Policies
- Lesson 5: Auditing Repository History
Chapter 10: New Features in Recent Git Releases
- Lesson 1: Overview of Git's Release Cycle
- Lesson 2: Features Added in Recent Git Versions
- Lesson 3: Exploring Experimental Features
- Lesson 4: Staying Updated with the Latest Git Tools
Chapter 11: Integration with DevOps Tools
- Lesson 1: Continuous Integration/Continuous Deployment (CI/CD) with Git
- Lesson 2: Integrating Git with Jenkins, GitHub Actions, and Other Tools
- Lesson 3: GitOps: Using Git as the Source of Truth
- Lesson 4: Versioning Infrastructure with Git
Chapter 12: Troubleshooting and Debugging
- Lesson 1: Understanding Common Git Errors
- Lesson 2: Recovering Lost Commits
- Lesson 3: Debugging and Troubleshooting Merge Conflicts
- Lesson 4: Undoing Mistakes Safely
- Lesson 5: Using reflog for Recovery
Chapter 13: Case Studies and Real-World Applications
- Lesson 1: Git in Open Source Projects
- Lesson 2: Git Workflow in Large Organizations
- Lesson 3: DevOps Case Study with Git
- Lesson 4: Lessons Learned from Git Misuse