Audience
developers, people who work with code in one way or another
Course Objective
By the end of the course, participants will:
- Master Git as a distributed version control system for solo and collaborative development.
- Gain hands-on experience with GitHub and GitLab, focusing on real-world workflows and industry standards.
- Understand how to manage, review, and integrate code in multi-developer environments.
- Build, automate, and secure CI/CD pipelines using both GitHub Actions and GitLab CI/CD.
- Learn best practices for permissions, access control, secrets management, and DevSecOps.
Course Outline
Part 1 – Foundations of Git, GitHub, and GitLab
Introduction to Git and Version Control Principles
- What is Git, and why is it essential in modern development?
- Core concepts: repositories, commits, branches, mergers, and staging.
- Understanding Git internals: working directory, index, local vs. remote.
- Managing and rolling back changes: revert, reset, checkout, and stash.
Working with Remote Repositories
- Setting up GitHub and GitLab accounts and connecting remote repositories.
- Cloning, forking, and maintaining synchronization with origin.
- Fetch, pull, push: understanding the data flow.
- Visualizing history and collaboration with graphical tools.
Branching Strategies and Collaborative Development
- Effective use of branches for features, bug fixes, and experiments.
- Introduction to Git workflows: centralized, feature branch, GitFlow, trunk-based.
- Collaborating through Pull Requests (GitHub) and Merge Requests (GitLab).
- Code review processes: inline comments, discussions, approval requirements.
Issue Tracking, Documentation, and Project Boards
- Managing development tasks with GitHub Issues and GitLab Issues.
- Milestones, labels, assignments, and workflows.
- Creating structured README files, contributing guidelines, and changelogs.
- Using GitHub Projects and GitLab Boards for agile task tracking.
Part 2 – Advanced Git Usage, CI/CD, and DevOps Automation
Advanced Git Features and Workflows
- Submodules, tags, and release management.
- Working with rebase, squashing commits, and resolving complex conflicts.
- Using hooks and custom Git aliases to improve productivity.
- Signing commits and enforcing security policies.
CI/CD Pipeline Fundamentals
- Introduction to continuous integration and continuous deployment principles.
- Comparing GitHub Actions vs. GitLab CI/CD.
- Anatomy of a pipeline: jobs, stages, runners, triggers, and artifacts.
- YAML configuration basics and best practices.
Automated Testing and Deployment
- Integrating testing frameworks into the pipeline.
- Generating test coverage reports and using them as deployment gates.
- Building and pushing Docker images automatically.
- Deploying to live environments: Heroku, AWS, Kubernetes, and custom servers.
Secrets Management and Access Control
- Managing environment variables and sensitive data securely.
- Role-based access control in GitHub and GitLab.
- Using organizational repositories, teams, and protected branches.
- Secrets injection, masked variables, and secure pipeline execution.
DevSecOps and Security Practices
- Static application security testing (SAST) with built-in tools.
- Dependency scanning (e.g., GitHub Dependabot, GitLab Dependency Scanning).
- Mitigating common threats: exposed credentials, misconfigured pipelines.
- Enforcing policies and audit trails in team environments.
Advanced Collaboration and Open Source Best Practices
- Working with forks and upstream contributions.
- Managing contributions in open-source projects.
- Community engagement via Discussions, Wikis, and Actions Marketplace.
- Governance models and contributor agreements.
Final Project and Course Completion
- Participants will work individually or in teams to deliver a real-world Git-based project.
- The project will include version control setup, branching strategy, collaboration simulation, and automated CI/CD pipeline.
- Final presentations include demonstrating version control best practices, pipeline execution, and deployment flow.
Instruction Methodology
- Hands-on labs and real-life scenarios.
- Peer collaboration exercises simulating real software teams.
- Instructor-led walkthroughs and guided challenges.
- Access to shared repositories and sandbox environments.
Course Outcomes
Participants will finish the course with:
- Strong Git fundamentals and advanced collaboration skills.
- Practical experience in managing and contributing to repositories on GitHub and GitLab.
- Hands-on understanding of DevOps pipelines, secrets, and deployment.
- Readiness to implement Git-centric CI/CD workflows in their own work environments.
מה זה GitHub?
GitHub היא פלטפורמה מתקדמת לניהול גרסאות ופיתוח תוכנה בשיתוף פעולה. היא מאפשרת לצוותי פיתוח לשמור קוד בענן, לעקוב אחר שינויים בצורה מסודרת, לנהל משימות, לפתוח בקשות שינויים (Pull Requests), ולבצע אינטגרציה עם תהליכי DevOps אוטומטיים.
GitHub מבוססת על Git – מערכת ניהול גרסאות מבוזרת – אך מוסיפה עליה שכבת ניהול, אבטחה, וכלים שיתופיים ברמה ארגונית.
ההבדל בין Git ל-GitHub?
- Git הוא כלי קוד פתוח שמותקן באופן מקומי במחשב המפתח. הוא משמש לניהול שינויים בקוד, עבודה עם סניפים (Branches), ביצוע מיזוגים, שחזורים, ועוד.
- GitHub הוא שירות בענן המנצל את Git לצורך ניהול שיתופי של פרויקטים, כולל ניהול הרשאות, תיעוד, מעקב אחר באגים, ותמיכה בעבודה בצוותים גדולים.
לארגונים, GitHub מהווה שכבת תשתית קריטית לניהול קוד בצורה מאובטחת, מתועדת ומבוקרת.
איך ניתן להוריד פרויקט מ GitHub?
ישנן שתי דרכים עיקריות להורדת פרויקט מ-GitHub:
- הורדה כקובץ ZIP:
- כניסה לעמוד הפרויקט ב-GitHub.
- לחיצה על כפתור Code → Download ZIP.
- פתיחת הקובץ המקומי.
2. שכפול (Clone) באמצעות Git:
- העתקת כתובת המאגר (HTTPS/SSH).
הרצת הפקודה:
git clone https://github.com/organization/project.git
שיטה זו מאפשרת להמשיך לעבוד עם היסטוריית הגרסאות ולבצע עדכונים עתידיים.