Course Details:
Git & GitLab (with GitHub) — Modern Developer Workflow
Course Overview:
This hands-on course provides a modern, practical introduction to Git and collaborative development workflows using GitLab and GitHub. Participants learn how to work confidently with version control in real-world team environments, focusing on branching strategies, merge and pull requests, code reviews, and safe collaboration practices.
Through guided labs and realistic examples, students build strong Git fundamentals while gaining a clear understanding of how GitLab and GitHub support modern development workflows. The course also introduces CI/CD concepts, showing how automated pipelines build, test, and deliver code, and what developers need to know to work effectively with them.
By the end of the course, participants will be able to use Git productively in daily development work, collaborate efficiently with teams on GitLab or GitHub, and understand how their code moves from commit to deployment in a modern DevOps environment.
By the end of this course, participants will be able to:
- Explain core Git concepts, including repositories, commits, branches, and distributed version control
- Create, manage, and organize Git repositories using GitLab or GitHub
- Apply modern branching strategies, including GitLab Flow and trunk-based development
- Collaborate effectively using merge requests and pull requests, including reviews and approvals
- Safely merge and rebase code while resolving conflicts and maintaining clean history
- Work with remote repositories using shared and fork-based collaboration models
- Inspect, understand, and manage commit history using Git tooling and platform interfaces
- Improve daily productivity with Git aliases, stashing, and interactive staging
- Write clear, meaningful commit messages and create atomic commits
- Understand CI/CD fundamentals and how automated pipelines build, test, and deploy code
- Navigate and troubleshoot GitLab CI/CD pipelines and understand GitHub Actions at a high level
- Follow best practices for secure, reliable, and team-friendly version control workflow
This course is designed for software developers and technical professionals who want to use Git effectively in team-based development environments. It is ideal for developers working with GitLab or GitHub who want to strengthen their version control skills and adopt modern collaboration and CI/CD workflows.
The course is also suitable for DevOps engineers, QA engineers, and technical team members who collaborate on shared codebases and need a solid understanding of Git workflows, merge and pull requests, and automated pipelines.
This course provides a hands-on, modern introduction to Git, with a strong focus on GitLab workflows while remaining fully compatible with GitHub. Participants learn best practices for collaboration, branching, rebasing, code review, and CI/CD.
1. Git & Platform Basics
Core Concepts
- What version control is and why it matters
- Git architecture: working tree, index, repository
- Local vs. remote repositories
- Distributed version control fundamentals
Git Installation & Setup
- Installing Git (Linux, macOS, Windows)
- Initial configuration (user.name, user.email)
- Line endings, editors, and defaults
GitLab & GitHub Overview
- Navigating GitLab UI
- Repository structure and permissions
- Comparing GitLab and GitHub concepts
Hands-on
- Initialize a repository
- Create your first commit
- Push to GitLab or GitHub
- Explore repository UI
2. GitLab Flow & Team Workflows
Workflow Models
- GitFlow vs. GitLab Flow
- Trunk-based development
- When to use feature branches
Environment Strategy
- Feature, staging, and production branches
- Release branches vs. tags
- Environment promotion patterns
Collaboration
- Issues, merge requests (MRs), and discussions
- Linking commits to issues
- Approvals and review policies
Optional Platform Features
- GitLab: Protected branches, approval rules
- GitHub: Branch protection, required reviews
3. Branching Strategy
Branching Fundamentals
- Creating and switching branches
- Short-lived vs. long-lived branches
- Naming conventions (feature/, bugfix/, release/)
Visualization & Cleanup
- Visualizing branch graphs
- Deleting merged branches
- Keeping repositories tidy
Releases
- Annotated vs. lightweight tags
- Semantic versioning
- Release notes
4. Configuring Git Like a Pro
Configuration
- Global vs. local .gitconfig
- Editor, diff, and merge tools
- Line ending normalization
Productivity Boosters
- Git aliases
- Shell integrations
Ignoring Files
- .gitignore patterns
- Project vs. global ignores
Authentication & Security
- HTTPS vs. SSH
- Managing SSH keys
- Credential helpers
5. Rebasing (Safely and Effectively)
Concepts
- Rebase vs. merge
- When rebasing is appropriate
- Rewriting history safely
Practical Rebasing
- Rebasing local branches
- Interactive rebase (reword, squash, fixup)
- Cleaning up commit history
Conflict Handling
- Resolving rebase conflicts
- Aborting and continuing rebases
- Common mistakes and recovery
6. Merging & Code Reviews
Merge Types
- Fast-forward merges
- No-fast-forward merges
- Merge commits explained
Platform-Based Merges
- Merge requests (GitLab)
- Pull requests (GitHub)
- Code review best practices
Tooling
- Diff views
- Inline comments
- Review checklists
7. Resolving Merge Conflicts
Understanding Conflicts
- Why conflicts occur
- Common conflict scenarios
Resolution Techniques
- Manual resolution in editors
- Using git status and git diff
- Marking conflicts as resolved
Best Practices
- Small, focused commits
- Frequent pulls/rebases
- Testing after resolution
8. Working with Remote Repositories
Remote Basics
- origin, upstream, and forks
- Cloning vs. forking
- Fetch vs. pull
Collaboration Models
- Shared repository model
- Fork-and-merge model
Tracking & Syncing
- Upstream branches
- Keeping forks up to date
9. Exploring & Managing History
History Inspection
- git log, git show, git diff
- Graph and pretty formats
Accountability Tools
- git blame
- Annotate views in GitLab/GitHub
Undoing Changes
- Amend commits
- Revert vs. reset
- Recovering lost commits
10. Improving Your Daily Git Workflow
Everyday Power Tools
- git stash
- Interactive staging (git add -p)
- Reviewing diffs before commit
Commit Quality
- Writing meaningful commit messages
- Atomic commits
- Conventional commits (optional)
Automation
- Aliases for repetitive tasks
- Git hooks (pre-commit basics)
11. CI/CD with GitLab (and GitHub)
CI/CD Fundamentals
- What CI/CD solves
- Pipelines, stages, and jobs
GitLab CI/CD
- GitLab Runner overview
- .gitlab-ci.yml structure
- Variables and secrets
- Artifacts and caching
Pipelines in Practice
- Build, test, deploy stages
- Visualizing and debugging pipelines
- Optimizing execution time
Optional GitHub Features
- GitHub Actions
- Workflow YAML syntax
- Marketplace actions
Optional Advanced Topics
- Monorepos vs. multirepos
- Submodules vs. subtrees
- Signed commits and tags
- Security scanning (SAST, dependency scanning)
- Release automation
- GitOps concepts
Course Deliverables
- Hands-on labs
- Sample repositories (GitHub & GitLab)
- CI/CD pipeline examples
- Best-practice checklists
- Real-world workflow patterns