DevOps

Complete Git Guide: Understand and Master Git and GitHub

Beginner
22h

By: Bogdan Stashchuk

Complete Git Guide: Understand and Master Git and GitHub

Overview

Complete with practical activities, this comprehensive Git and GitHub guide will help you understand how Git works. You'll learn how to use Git features efficiently and fix issues in your development workflow. Starting with the internal structure of a Git repository, this course will take you through the four types of Git objects: blobs, trees, commits, and annotated tags. You'll understand how each object has a unique SHA-1 hash and how all objects are stored in folders, files are stored in blobs, and filenames are stored in other Git objects called trees. You'll even get to grips with creating new Git objects without using git commit and git add. Once you've created Git objects in the Git repository, you will add it to the staging area and working directory. By the end of this course, you'll have become a Git and GitHub expert and be able to perform basic and advanced Git tasks seamlessly.

Modules

1. Introduction to Git and GitHub

1.1 Introduction to Git and GitHub5 min
1.2 What to Expect in the Course1 min
1.3 Git Versus GitHub6 min

2. Installation of Git and Configuration of the Shell

2.1 Introduction to Installation of Git and Configuration of the Shell1 min
2.2 Installing Git on MacOS2 min
2.3 Installing Git on Windows11 min
2.4 Installing Git on Linux8 min
2.5 Installing iTerm2 on MacOS6 min
2.6 Installing Custom Z-Shell on MacOS6 min

3. Basic Shell Commands

3.1 Introduction to Basic Shell Commands1 min
3.2 Shell Commands - Directory Management10 min
3.3 Shell Commands - File Management - Part 19 min
3.4 Shell Commands - File Management - Part 28 min

4. How Git Works Under the Hood

4.1 Introduction to How Git Works Under the Hood1 min
4.2 Initializing a New Git Repository4 min
4.3 Overview of the .git Folder4 min
4.4 Git Object Types3 min
4.5 Writing a New Git Object with a git hash-object7 min
4.6 JSON Versus Git Database4 min
4.7 What is the Hash Function?4 min
4.8 Hash Function Overview3 min
4.9 SHA-1 Hash Function10 min
4.10 How Many Files can Git Store?4 min
4.11 Probability Theory in a Dice Game4 min
4.12 Git Hash Collision Probability6 min
4.13 More details on hash collision probability27 min
4.14 Exploring Git Objects with the git cat-file Command5 min
4.15 Creating a New Git Blob Based on a File8 min
4.16 Why Git Blobs do not Store File Names3 min
4.17 Contents of Git Objects10 min
4.18 What Have We Learned so Far?2 min
4.19 Tree Objects in Git3 min
4.20 Git Object Permissions2 min
4.21 Creating a Git Tree Object10 min
4.22 Examining Tree Object5 min
4.23 Working Directory, Staging Area, and Git Repository2 min
4.24 Overview of Current File Distribution4 min
4.25 Git Read-tree4 min
4.26 Reading Files in the Staging Area Using git ls-files2 min
4.27 Git Checkout-index3 min
4.28 Number of Folders Created for Objects2 min
4.29 How Git Works Under the Hood Summary4 min

5. Basic Git Operations

5.1 Introduction to Basic Git Operations1 min
5.2 What is Commit?4 min
5.3 Configuring the Git Author Name and Email4 min
5.4 Creating Your First Commit4 min
5.5 Exploring a Commit Object6 min
5.6 Project's Current State Overview5 min
5.7 Basic Git Commands4 min
5.8 Adding a New File to the Working Directory6 min
5.9 Git Files Lifecycle9 min
5.10 Stage File2 min
5.11 Unstage File using git rm3 min
5.12 Committing Changes2 min
5.13 Exploring Changes in a Git Repository8 min
5.14 Current Diagram of a Git Repository6 min

6. Git Branches and HEAD

6.1 Introduction to Git Branches and HEAD1 min
6.2 Most Common Git Operations6 min
6.3 Project's Current State Overview1 min
6.4 Installing GitHub Desktop4 min
6.5 GitHub Desktop Overview5 min
6.6 What is Branch in Git?7 min
6.7 What is HEAD in Git?6 min
6.8 Third Commit5 min
6.9 Git Repository Changes after a Third Commit7 min
6.10 Checking Out a Specific Commit14 min
6.11 Why Do We Need Branches?11 min
6.12 Git Branches Management3 min
6.13 Creating a New Branch7 min
6.14 Committing Changes in the New Branch5 min
6.15 Exploring Commit in the New Branch6 min
6.16 Why Git Reuses Blobs with the Same Contents?8 min

7. Cloning, Exploring, and Modifying Public Repositories

7.1 Introduction to Cloning, Exploring, and Modifying Public Repositories1 min
7.2 Cloning Remote Repository6 min
7.3 Exploring the Contents of the Cloned Repository8 min
7.4 Unpacking Git Objects4 min
7.5 Exploring Cloned Repository in GitHub Desktop5 min
7.6 Installing the Text Editor Visual Studio Code3 min
7.7 Exploring Visual Studio Code6 min
7.8 Committing Changes in the Cloned Repository12 min
7.9 Git diff Command14 min
7.10 Overview of the Changes4 min

8. Merging Branches

8.1 Introduction to Merging Branches1 min
8.2 Why Branch Merging is Needed3 min
8.3 Fast-Forward Merge4 min
8.4 Merging process2 min
8.5 Fast-Forward Merge in Action7 min
8.6 Three-Way Merge6 min
8.7 Performing a Three-Way Merge13 min
8.8 Observing a Git Repository after a Three-Way Merge7 min
8.9 Installing SourceTree4 min
8.10 SourceTree in Action7 min
8.11 What is Merge Conflict?3 min
8.12 Observing Conflicts in the Staging Area and Working Directory7 min
8.13 Resolving a Merge Conflict in Terminal3 min
8.14 Resolving Conflicts in Visual Studio Code9 min

9. GitHub and Remote Repositories

9.1 Introduction to GitHub and Remote Repositories1 min
9.2 What is a Git Hosting Service?4 min
9.3 Creating a GitHub Account4 min
9.4 Exploring the First Repository in GitHub11 min
9.5 Creating Another Commit in GitHub3 min
9.6 Creating a New Branch in GitHub1 min
9.7 Making Changes in the New Branch4 min
9.8 Cloning a Remote Repository5 min
9.9 What is Remote Repository?3 min
9.10 How Remote Repository Empowers Collaboration?4 min

10. Git Push, Fetch, and Pull

10.1 Introduction to Git Push, Fetch, and Pull2 min
10.2 Overview of the Push, Fetch, and Pull Git Commands6 min
10.3 What is Origin?4 min
10.4 Listing Remote and Local Branches3 min
10.5 What is Tracking Branch?5 min
10.6 Checking Out a Remote Branch4 min
10.7 Git Remote Show Origin3 min
10.8 Git Fetch in Action6 min
10.9 Git Pull Two-Step Process4 min
10.10 How to Perform Git Pull5 min
10.11 What is FETCH_HEAD?8 min
10.12 Git Pull with Fast-Forward Merge8 min
10.13 Fetching Remote Changes Manually9 min
10.14 Merging FETCH_HEAD Manually6 min
10.15 Resolving Conflicts Using Git Pull12 min
10.16 Pushing to a Remote Repository9 min
10.17 Committing Under Another Author3 min
10.18 How do Remote and Local Branches Sync?4 min
10.19 Creating a Remote Branch Based on a Local Branch9 min
10.20 Updating the Tracking Status of the Branches8 min
10.21 Removing a Remote Branch Using a Local Terminal4 min
10.22 Git Show-ref4 min

11. Pull Requests

11.1 Introduction to Pull Requests1 min
11.2 Collaboration Between Contributors4 min
11.3 What is a Pull Request?3 min
11.4 Why was Pull Request Named Pull Request?6 min
11.5 Pull Request Versus Merge Request5 min
11.6 Pull Request Step-By-step8 min
11.7 Creating a New Repository in GitHub7 min
11.8 Changing the Author of the Last Commit3 min
11.9 Pushing Branch to Remote5 min
11.10 Opening a Pull Request8 min
11.11 Adding Comments and Approving a Pull Request9 min
11.12 Creating and Publishing a New Branch Using GitHub Desktop6 min
11.13 Signing into GitHub Using GitHub Desktop1 min
11.14 Creating and Merging a Pull Request9 min
11.15 Adding a New Collaborator in GitHub4 min
11.16 Exploring Your GitHub Account5 min
11.17 Opening and Merging a Pull Request Using a Collaborator7 min
11.18 Merging without Approvals2 min
11.19 Configuring a Protected Branch Rule4 min
11.20 Merging after Gaining Required Approval3 min
11.21 Exploring Pull Requests in the Public Repositories6 min
11.22 Working with Issues in GitHub12 min

12. Forks and Contribution to the Public Repositories

12.1 Introduction to Forks and Contribution to the Public Repositories1 min
12.2 Creating a Fork5 min
12.3 Synching Changes from the Parent Repository5 min
12.4 Adding a New Upstream Remote Repository2 min
12.5 Fetching Changes from Upstream2 min
12.6 Synchronizing Changes from Upstream11 min
12.7 How to Open Pull Request from a Forked Repository3 min
12.8 Creating a Pull Request from a Forked Repository2 min
12.9 Removing a Repository Collaborator2 min
12.10 Forking Repository3 min
12.11 Committing Changes in a Forked Repository3 min
12.12 Opening Pull Request from a Forked Repository5 min
12.13 Approving and Merging a Pull Request from a Forked Repository12 min

13. Git Tags

13.1 Introduction to Git Tags1 min
13.2 Git Tags Overview3 min
13.3 Staging Versus Production7 min
13.4 Semantic Versioning11 min
13.5 Lightweight Versus Annotated Tags4 min
13.6 Creating Lightweight Tags10 min
13.7 Creating Annotated Tags3 min
13.8 Exploring a Git Tag Object3 min
13.9 Pushing Tags to Remote10 min

14. Rebasing

14.1 Introduction to Rebasing1 min
14.2 What is Rebasing?2 min
14.3 Merging Versus Rebasing5 min
14.4 How to Perform Rebasing2 min
14.5 Rebasing - Step 13 min
14.6 Rebasing - Step 23 min
14.7 Creating a New Repository2 min
14.8 Creating a Feature Branch and Making Changes5 min
14.9 Rebasing a Feature Branch on Top of Master Branch3 min
14.10 Completing Rebasing by Performing Merging2 min
14.11 Exploring Graphs and Commits in SourceTree5 min
14.12 Deleting a Feature Branch and Pushing to Remote2 min

15. Ignoring Files in Git

15.1 Introduction to Ignoring Files in Git1 min
15.2 What is Git Ignore?2 min
15.3 Git File Statuses: Untracked, Tracked, and Ignored2 min
15.4 Basic Git ignore Rules8 min
15.5 Pushing Repository with Ignored Files to Remote3 min
15.6 Committing Previously Ignored Files3 min
15.7 Ignoring Previously Committed Files4 min
15.8 Git ignore Common Practices and Templates6 min

16. Detached HEAD

16.1 Introduction to Detached HEAD1 min
16.2 Detached HEAD State4 min
16.3 Making Experimental Commits in Detached HEAD State8 min
16.4 Retaining Changes Made in the Detached HEAD State8 min

17. Advanced Git

17.1 Introduction to Advanced Git1 min
17.2 Cloning One of the Public Repositories3 min
17.3 Git Log Options: Oneline, Graph, and Stat6 min
17.4 Git Shortlog2 min
17.5 Filtering Commits by Author or Keyword3 min
17.6 Pretty Formatting of Git Log3 min
17.7 Filtering Merge Commits in Git Log3 min
17.8 Git Reset10 min
17.9 Git Revert9 min
17.10 Modifying the Last Commit Using the Amend Option4 min
17.11 Cherry-picking Commits6 min
17.12 Reflog - Log of All Git Operations7 min
17.13 Stashing Changes Using Terminal5 min
17.14 Stashing Using GitHub Desktop2 min
17.15 Garbage Collection3 min
17.16 Squashing of Commits in GitHub8 min
17.17 Interactive Rebasing with Squashing in the Local Repository8 min
17.18 Git Development Workflow6 min

18. GitHub Pages

18.1 Introduction to GitHub Pages1 min
18.2 Creating a Simple Website Using GitHub Pages4 min
18.3 Hosting any Repository Using GitHub Pages8 min
18.4 Creating a Basic React application10 min
18.5 Preparing the React Application for Publishing to the GitHub Pages9 min
18.6 Fixing Errors with Cached Credentials Using SSH Instead of HTTPS11 min
18.7 Verifying a React GitHub Page7 min
18.8 Configuring a Custom Domain for GitHub Pages11 min
18.9 Creating a Static GitHub Page Using Markdown5 min

19. GitHub Hooks

19.1 Introduction to GitHub Hooks2 min
19.2 Normal Git Workflow without Hooks3 min
19.3 What are Git Hooks?7 min
19.4 How Git Hooks can Be Used in Practice5 min
19.5 Using a Pre-Commit Hook13 min
19.6 Enabling a Post-Commit Hook5 min
19.7 Disabling Rebasing Using a Pre-Rebase Hook7 min
19.8 Matching an Author's Email against a Regular Expression7 min
19.9 Why Local Git Hooks are not Pushed to the Remote7 min
19.10 Cleaning Up the Local Git Hooks Repository5 min
19.11 Initializing a New Node.js Project8 min
19.12 Installing the Jest NPM Package for Testing3 min
19.13 Adding Multi and Sum Modules with Tests10 min
19.14 Using the Pre-Commit NPM Package for Automation of the Pre-commit Hook7 min
19.15 Cloning a Remote Repository and Verifying a Pre-Commit Hook4 min
19.16 Replacing a Pre-Commit NPM Package with Husky6 min
19.17 Skipping All Git Hooks Using the --no-verify Option5 min
19.18 Introduction to Linter and Running Linter in the Pre-Commit Hook14 min
19.19 Introducing a Lint-Staged Package to Check only Staged Files6 min
19.20 Verifying Selective Linting and Testing Using Lint-staged5 min
19.21 Adding a Post-Commit Hook4 min
19.22 Verifying Commit Message Using Commitlint9 min
19.23 Git Hooks Summary3 min

20. Course Wrap Up

20.1 Git and GitHub Course Wrap Up

Ready to Elevate Your Team's Learning?

Talk with our sales team to see how StormWind can transform the way your organization trains and grows.

CONTACT SALES