This course provides a comprehensive introduction to Git, from basic concepts to working with branches, using the command line, and leveraging Git with Visual Studio and Visual Studio Code.
Introduction to Git
Does Git stand for global information tracker or goddamn idiotic truckload of sht* (according to Linus Torvalds)? Either way, it's the most widely used source code management tool today. This course provides you with an introduction to Git, from basic concepts to working with branches, using the command line, and leveraging Git with Visual Studio and Visual Studio Code.
This course is designed for software developers regardless of their programming language.
Contents
Introduction to Git
- Source code management comparison (centralized vs. distributed)
- Git's design philosophy and advantages
- Git command-line interface basics
- Git internals: objects, references, and the .git directory
- Understanding commits, trees, and blobs
Working with Repositories
- Cloning existing repositories
- Initializing new repositories
- Configuring Git (user identity, editor, aliases)
- Adding and removing files and directories
- The staging area (index) and its role
- Ignoring files with .gitignore
Tracking Changes
- The Git workflow: working directory, staging, repository
- Committing changes with meaningful messages
- Viewing and understanding diffs
- Amending commits
- Stashing work in progress
History and Repository State
- Searching the Git repository (git grep, git log filtering)
- Log analysis and visualization
- Viewing file history and annotations (git blame)
- Comparing commits, branches, and tags
Branches and Merges
- Understanding branches as lightweight pointers
- Creating and switching branches
- Merging branches (fast-forward vs. three-way merge)
- Resolving merge conflicts step-by-step
- Rebasing commits: when and why
- Interactive rebase for commit cleanup
- Cherry-picking specific commits
Working in Teams
- Remote repositories: adding, fetching, pulling, pushing
- Centralized workflow, Feature branch workflow, Gitflow workflow
- Forking workflow (open-source collaboration model)
- Mono-repos vs. multi-repos
- Using submodules and subtrees
Fixing Things
- Undoing changes: reset vs. revert vs. restore
- Recovering lost commits with reflog
- Rewriting history: risks and best practices
Git with IDEs
- Using Git in Visual Studio
- Using Git in Visual Studio Code
- Integration with GitHub, Azure DevOps, GitLab
Git in the DevOps Pipeline
- Continuous Integration with Git hooks and automation
- Continuous Delivery and deployment triggers
- Deployment patterns and branching strategies
- Semantic versioning and tagging releases
Tips, Tricks & Best Practices
- Writing effective commit messages
- Branch naming conventions
- When to rebase vs. merge
- Securing repositories and handling sensitive data
- Git aliases and productivity shortcuts
Prerequisites
- Basic familiarity with command-line interfaces
- Experience with any programming language
- Understanding of basic software development concepts