App-Development
Backend-Development

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.

  1. Introduction to Git

    • Source code management comparison (centralized vs. distributed)
    • Git's design philosophy and advantages
    • Common Git workflows overview
    • Git command-line interface basics
    • Git internals: objects, references, and the .git directory
    • Understanding commits, trees, and blobs
  2. 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
  3. Tracking Changes

    • The Git workflow: working directory, staging, repository
    • Committing changes with meaningful messages
    • Viewing and understanding diffs
    • Amending commits
    • Stashing work in progress
  4. History and Repository State

    • Searching the Git repository (git grep, git log filtering)
    • Checking status of Git objects
    • Log analysis and visualization (git log options, graphs)
    • Viewing file history and annotations (git blame)
    • Comparing commits, branches, and tags
Day 2: Collaboration & Advanced Techniques
  1. 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
    • Merge strategies and options
    • Rebasing commits: when and why
    • Interactive rebase for commit cleanup
    • Cherry-picking specific commits
  2. Working in Teams

    • Remote repositories: adding, fetching, pulling, pushing
    • Centralized workflow (single shared repository)
    • Feature branch workflow (topic branches and pull requests)
    • Gitflow workflow (master, develop, feature, release, hotfix branches)
    • Forking workflow (open-source collaboration model)
    • Comparing workflows: choosing the right one for your team
    • Mono-repos vs. multi-repos: trade-offs and considerations
    • Using submodules and subtrees for dependency management
  3. Fixing Things

    • Cherry-picking commits across branches
    • Undoing changes: reset vs. revert vs. restore
    • Recovering lost commits with reflog
    • Housekeeping: garbage collection, pruning, and repository maintenance
    • Rewriting history: risks and best practices
    • Handling detached HEAD state
  4. Git with IDEs

    • Using Git in Visual Studio
    • Using Git in Visual Studio Code
    • Leveraging GUI tools for visualization and conflict resolution
    • Integration with GitHub, Azure DevOps, GitLab
  5. What's Next: 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
    • Code review workflows and pull request best practices
  6. Tips, Tricks & Best Practices

    • Writing effective commit messages
    • Commit early, commit often
    • Keeping commits atomic and focused
    • Branch naming conventions
    • When to rebase vs. merge
    • Securing repositories and handling sensitive data
    • Git aliases and productivity shortcuts
    • Troubleshooting common issues
Highlight

By the end of this course, participants will be able to:

  • Understand Git's architecture and how it differs from centralized version control systems.
  • Create, clone, and manage Git repositories effectively.
  • Track changes, stage files, and commit work with meaningful messages.
  • Navigate repository history and search through commits.
  • Create, merge, and manage branches with confidence.
  • Resolve merge conflicts systematically.
  • Collaborate with teams using established Git workflows (centrali
Prerequisites
  • Basic familiarity with command-line interfaces
  • Experience with any programming language
  • Understanding of basic software development concepts
An unhandled error has occurred. Reload 🗙