Booking options
£88.99
£88.99
On-Demand course
21 hours 51 minutes
All levels
GitHub is a Git repository hosting service, but it adds many of its own features. While Git is a command line tool, GitHub provides a Web-based graphical interface. It also provides access control and several collaboration features, such as a wikis and basic task management tools for every project.
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.
Use Git in terminals as well as GUIs such as GitHub Desktop and Visual Studio Code
Explore different Git objects, including blobs, trees, and annotated tags
Create local and remote Git repositories
Get to grips with rebasing and merging branches
Discover what a pull request is and how to create it in GitHub
Learn advanced Git operations such as squashing, amending, and reverting commits
Contribute to public repositories using the forking technique
Whether you're a complete beginner or a developer with years of experience using Git, this course will add to your Git and GitHub knowledge and help enhance your skills.
Clear step-by-step explanations starting from the basics of Git. You will perform a lot of practice activities in the local and remote Git repositories and refer to diagrams for illustration of the key points.
Understand how Git and GitHub work under the hood * Get to grips with performing basic and advanced Git operations * Learn how to manage repositories with GitHub, SourceTree, and Visual Studio Code
Bogdan Stashchuk has over 20 years of experience as a software engineering instructor. He excels at breaking down complex topics into easy-to-follow steps. His courses are designed with hands-on exercises, ensuring that learners can actively participate and apply what they learn. From start to finish, students can follow along and complete tasks just as Bogdan demonstrates in his lectures. He also includes challenging assignments with detailed solutions. This approach helps learners understand and remember the material long after they've completed the course. Through his dedication and expertise, Bogdan ensures a valuable and effective learning experience for everyone.
1. Introduction to Git and GitHub
1. Introduction This video provides an introduction to Git and GitHub. |
2. Section 1 Introduction This video provides an introduction to this section. |
3. Git Versus GitHub This video illustrates the difference between Git and GitHub. |
2. Installation of Git and Configuration of the Shell
1. Section 2 Introduction This video provides an introduction to this section. |
2. Installing Git on MacOS This video demonstrates how to install Git on MacOS. |
3. Installing Git on Windows This video demonstrates how to install Git on Windows. |
4. Installing Git on Linux This video demonstrates how to install Git on Linux. |
5. Installing iTerm2 on MacOS This video explains how to install iTerm2 on MacOS. |
6. Installing Custom Z-Shell on MacOS This video demonstrates how to install custom Z-shell on MacOS. |
3. Basic Shell Commands
1. Section 3 Introduction This video provides an introduction to the basic shell commands. |
2. Shell Commands - Directory Management This video focuses on shell commands with respect to directory management. |
3. Shell Commands - File Management - Part 1 This video is the first part of the two-part video that focuses on shell commands with respect to file management. |
4. Shell Commands - File Management - Part 2 This video is the second part of the two-part video that explains some more shell commands with respect to file management. |
4. How Git Works Under the Hood
1. Section 4 Introduction This video provides an introduction to this section. |
2. Initializing a New Git Repository This video explains the initialization of a new Git repository. |
3. Overview of the .git Folder This video provides an overview of the .git folder. |
4. Git Object Types This video explains the various Git object types. |
5. Writing a New Git Object with a git hash-object This video illustrates how to write a new Git object with a git hash-object. |
6. JSON Versus Git Database This video illustrates the difference between JSON and the Git database. |
7. What is the Hash Function? This video explains the hash function. |
8. Hash Function Overview This video provides an overview of the hash function. |
9. SHA-1 Hash Function This video explains the SHA-1 hash function. |
10. How Many Files can Git Store? This video illustrates the number of files Git can store. |
11. Probability Theory in a Dice Game This video explains the probability theory in a dice game. |
12. Git Hash Collision Probability This video explains the Git hash collision probability. |
13. More details on hash collision probability (OPTIONAL) This video gives a more detailed view on hash collision probability. |
14. Exploring Git Objects with the git cat-file Command This video explores some Git objects with the git cat-file command. |
15. Creating a New Git Blob Based on a File This video explains how to create a new Git blob based on a file. |
16. Why Git Blobs do not Store File Names This video explains why the Git blobs do not store a file name. |
17. Contents of Git Objects This video explains the various contents of Git objects. |
18. What Have We Learned so Far? This video provides an overview of the contents we have learned so far in this section. |
19. Tree Objects in Git This video explains the tree objects in Git. |
20. Git Object Permissions This video explains the Git object permissions. |
21. Creating a Git Tree Object This video explains how to create a Git tree object. |
22. (Free Preview): Examining Tree Object This video demonstrates how to examine a tree object in Git. |
23. Working Directory, Staging Area, and Git Repository This video focuses on the working directory, staging area, and Git repository. |
24. Overview of Current File Distribution This video provides an overview of the current file distribution. |
25. Git Read-tree This video sheds light on the Git read-tree. |
26. Reading Files in the Staging Area Using git ls-files This video explains how to read files in the staging area using git ls-files. |
27. Git Checkout-index This video explains the Git checkout-index. |
28. Number of Folders Created for Objects This video explains the number of folders that can be created for objects. |
29. Section Summary This video provides a summary of this section. |
5. Basic Git Operations
1. Section 5 Introduction This video provides an introduction to this section. |
2. What is Commit? This video explains the concept of commit. |
3. Configuring the Git Author Name and Email This video demonstrates how to configure the Git author name and email. |
4. Creating Your First Commit This video demonstrates how to create your first commit. |
5. Exploring a Commit Object This video explains the Git commit object. |
6. Project's Current State Overview This video provides an overview of the project's current state. |
7. Basic Git Commands This video explains the basic Git commands. |
8. Adding a New File to the Working Directory This video demonstrates how to add a new file to the working directory. |
9. Git Files Lifecycle This video explains the Git files lifecycle. |
10. Stage File This video explains the concept of a stage file. |
11. Unstage File using git rm This video explains the concept of an unstage file using git rm. |
12. Committing Changes This video explains how to commit changes in Git. |
13. Exploring Changes in a Git Repository This video explains the changes in a Git repository. |
14. Current Diagram of a Git Repository This video illustrates the current diagram of a Git repository. |
6. Git Branches and HEAD
1. Section 6 Introduction This video provides an introduction to this section. |
2. Most Common Git Operations This video explains the most common Git operations. |
3. Project's Current State Overview This video provides an overview of the project's current state. |
4. Installing GitHub Desktop This video demonstrates how to install GitHub Desktop. |
5. GitHub Desktop Overview This video provides an overview of GitHub Desktop. |
6. What is Branch in Git? This video explains the concept of branch in Git. |
7. What is HEAD in Git? This video explains the concept of HEAD in Git. |
8. Third Commit This video explains the concept of third commit in Git. |
9. Git Repository Changes after a Third Commit This video illustrates the Git repository changes after a third commit. |
10. Checking Out a Specific Commit This video explains how to check out a specific commit in Git. |
11. Why Do We Need Branches? This video explains the purpose of branches in Git. |
12. Git Branches Management This video sheds light on Git branches management. |
13. Creating a New Branch This video demonstrates how to create a new branch in Git. |
14. Committing Changes in the New Branch This video explains how to commit changes in the new branch in Git. |
15. Exploring Commit in the New Branch This video explains how to commit in the new branch in Git. |
16. Why Git Reuses Blobs with the Same Contents? This video explains why Git reuses blobs with the same contents. |
7. Cloning, Exploring, and Modifying Public Repositories
1. Section 7 Introduction This video provides an introduction to the section. |
2. Cloning Remote Repository This video explains the concept of cloning remote repository in Git. |
3. Exploring the Contents of the Cloned Repository This video explores the contents of the cloned repository. |
4. Unpacking Git Objects This video explains the unpacking of Git objects. |
5. Exploring Cloned Repository in GitHub Desktop This video explores cloned repository in GitHub Desktop. |
6. Installing the Text Editor Visual Studio Code This video demonstrates how to install the text editor 'Visual Studio Code'. |
7. Exploring Visual Studio Code This video explores Visual Studio Code. |
8. Committing Changes in the Cloned Repository This video explains how to commit changes in the cloned repository. |
9. Git diff Command This video explains the Git diff command. |
10. Overview of the Changes This video provides an overview of the changes made in this section. |
8. Merging Branches
1. Section 8 Introduction This video provides an introduction to this section. |
2. Why Branch Merging is Needed This video explains the purpose of branch merging in Git. |
3. Fast-Forward Merge This video explains the concept of fast-forward merge in Git. |
4. Merging process This video explains the Git merging process. |
5. Fast-Forward Merge in Action This video demonstrates the process of fast-forward merge. |
6. Three-Way Merge This video explains the three-way merge in Git. |
7. Performing a Three-Way Merge This video demonstrates how to perform a three-way merge. |
8. Observing a Git Repository after a Three-Way Merge This video focuses on the Git repository after a three-way merge. |
9. Installing SourceTree This video demonstrates how to install a SourceTree. |
10. SourceTree in Action This video explains the working of the SourceTree. |
11. What is Merge Conflict? This video explains the concept of merge conflict in Git. |
12. Creating Merge Conflict This video explains the process of creating a merge conflict in Git. |
13. Observing Conflicts in the Staging Area and Working Directory This video sheds lights on the conflicts in the staging area and working directory. |
14. Resolving a Merge Conflict in Terminal This video explains the process of resolving a merge conflict in Terminal. |
15. Resolving Conflicts in Visual Studio Code This video explains how to resolve conflicts in Visual Studio Code. |
9. GitHub and Remote Repositories
1. Section 9 Introduction This video provides an introduction to this section. |
2. What is a Git Hosting Service? This video explains the concept of a Git hosting service. |
3. Creating a GitHub Account This video demonstrates the process of creating a GitHub account. |
4. Exploring the First Repository in GitHub This video explores the first repository in GitHub. |
5. Creating Another Commit in GitHub This video demonstrates the process of creating another commit in GitHub. |
6. Creating a New Branch in GitHub This video demonstrates the process of creating a new branch in GitHub. |
7. Making Changes in the New Branch This video explains how to make changes in the new branch in GitHub. |
8. Cloning a Remote Repository This video focuses on cloning a remote repository in GitHub. |
9. What is Remote Repository? This video explains the concept of remote repository in GitHub. |
10. How Remote Repository Empowers Collaboration? This video explains how remote repository empowers collaboration in GitHub. |
10. Git Push, Fetch, and Pull
1. Section 10 Introduction This video provides an introduction to this section. |
2. Overview of the Push, Fetch, and Pull Git Commands This video provides an overview of the push, fetch, and pull Git commands. |
3. What is Origin? This video explains the concept of origin. |
4. Listing Remote and Local Branches This video explains how to list remote and local branches. |
5. What is Tracking Branch? This video explains the concept of tracking branch in Git. |
6. Checking Out a Remote Branch This video explains how to check out a remote branch in Git. |
7. Git Remote Show Origin This video explains the concept of Git remote show origin. |
8. Git Fetch in Action This video explains the process of Git fetch. |
9. Git Pull Two-Step Process This video explains the two-step process of Git pull. |
10. How to Perform Git Pull This video demonstrates how to perform Git pull. |
11. What is FETCH_HEAD? This video explains the concept of FETCH_HEAD in Git. |
12. Git Pull with Fast-Forward Merge This video explains the process of Git pull with fast-forward merge. |
13. Fetching Remote Changes Manually This video demonstrates how to fetch remote changes manually in Git. |
14. Merging FETCH_HEAD Manually This video explains the process of merging FETCH_HEAD manually. |
15. Resolving Conflicts Using Git Pull This video demonstrates the process of resolving conflicts using the Git pull command. |
16. Pushing to a Remote Repository This video explains how to push to a remote repository in Git. |
17. Committing Under Another Author This video explains how to commit under another author in Git. |
18. How do Remote and Local Branches Sync? This video explains how to sync remote and local branches in Git. |
19. Creating a Remote Branch Based on a Local Branch This video explains the process of creating a remote branch based on a local branch in Git. |
20. Updating the Tracking Status of the Branches This video demonstrates how to update the tracking status of the branches. |
21. Removing a Remote Branch Using a Local Terminal This video explains the process of removing a remote branch using a local terminal in Git. |
22. Git Show-ref This video focuses on Git show-ref. |
11. Pull Requests
1. Section 11 Introduction This video provides an introduction to this section. |
2. Collaboration Between Contributors This video explains the collaboration between contributors. |
3. What is a Pull Request? This video explains the concept of a Git pull request. |
4. Why was Pull Request Named Pull Request? This video explains why pull request was named pull request. |
5. Pull Request Versus Merge Request This video illustrates the difference between pull request and merge request. |
6. Pull Request Step-By-step This video explains the pull request process step-by-step. |
7. Creating a New Repository in GitHub This video explains the process of creating a new repository in GitHub. |
8. Changing the Author of the Last Commit This video explains the process of changing the author of the last commit. |
9. Pushing Branch to Remote This video demonstrates how to push branch to remote. |
10. Opening a Pull Request This video explains the process of opening a pull request. |
11. Adding Comments and Approving a Pull Request This video explains how to add comments and approve a pull request. |
12. Creating and Publishing a New Branch Using GitHub Desktop This video demonstrates the process of creating and publishing a new branch using GitHub Desktop. |
13. Signing into GitHub Using GitHub Desktop This video demonstrates the process of signing into GitHub using GitHub Desktop. |
14. Creating and Merging a Pull Request This video demonstrates the process of creating and merging a pull request. |
15. Adding a New Collaborator in GitHub This video explains the process of adding a new collaborator in GitHub. |
16. Exploring Your GitHub Account This video helps you explore your GitHub account. |
17. Opening and Merging a Pull Request Using a Collaborator This video explains how to open and merge a pull request using a collaborator. |
18. Merging without Approvals This video explains how, by default, merging without approvals is allowed. |
19. Configuring a Protected Branch Rule This video explains how to configure a protected branch rule. |
20. Merging after Gaining Required Approval This video explains the merging process after gaining required approval. |
21. Exploring Pull Requests in the Public Repositories This video explores pull requests in the public repositories. |
22. Working with Issues in GitHub This video explains how to work with issues in GitHub. |
12. Forks and Contribution to the Public Repositories
1. Section 12 Introduction This video provides an introduction to this section. |
2. Creating a Fork This video explains how to create a fork in GitHub. |
3. Synching Changes from the Parent Repository This video explains how to sync changes from the parent repository. |
4. Adding a New Upstream Remote Repository This video explains how to add a new upstream remote repository. |
5. Fetching Changes from Upstream This video demonstrates the process of fetching changes from upstream. |
6. Synchronizing Changes from Upstream This video explains the process of synchronizing changes from upstream. |
7. How to Open Pull Request from a Forked Repository This video explains how to open pull request from a forked repository. |
8. Creating a Pull Request from a Forked Repository This video explains the process for creating a pull request from a forked repository. |
9. Removing a Repository Collaborator This video demonstrates the process of removing a repository collaborator. |
10. Forking Repository This video explains the concept of forking repository in GitHub. |
11. Committing Changes in a Forked Repository This video explains how to commit changes in a forked repository. |
12. Opening Pull Request from a Forked Repository This video explains the process of opening pull request from a forked repository. |
13. Approving and Merging a Pull Request from a Forked Repository This video explains the process of approving and merging a pull request from a forked repository. |
13. Git Tags
1. Section 13 Introduction This video provides an introduction to this section. |
2. Git Tags Overview This video provides an overview of Git tags. |
3. Staging Versus Production This video highlights the difference between staging and production. |
4. Semantic Versioning This video explains the concept of semantic versioning with Git tags. |
5. Lightweight Versus Annotated Tags This video highlights the difference between lightweight and annotated tags. |
6. Creating Lightweight Tags This video explains how to create lightweight tags. |
7. Creating Annotated Tags This video explains how to create annotated tags. |
8. Exploring a Git Tag Object This video explains the process of exploring a Git tag object. |
9. Pushing Tags to Remote This video demonstrates the process of pushing tags to remote. |
14. Rebasing
1. Section 14 Introduction This video provides an introduction to this section. |
2. Introduction to Rebasing This video provides an introduction to rebasing in Git. |
3. Merging Versus Rebasing This video illustrates the difference between merging and rebasing. |
4. How to Perform Rebasing This video explains the process of performing rebasing. |
5. Rebasing - Step 1 This video explains the first step of rebasing. |
6. Rebasing - Step 2 This video explains the second step of rebasing. |
7. Creating a New Repository This video explains how to create a new repository in Git. |
8. Creating a Feature Branch and Making Changes This video explains how to create a feature branch and make changes. |
9. Rebasing a Feature Branch on Top of Master Branch This video explains how to rebase a feature branch on top of master branch. |
10. Completing Rebasing by Performing Merging This video explains how to complete rebasing by performing merging. |
11. Exploring Graphs and Commits in SourceTree This video helps you explore graphs and commits in SourceTree. |
12. Deleting a Feature Branch and Pushing to Remote This video demonstrates the process of deleting a feature branch and pushing to remote. |
15. Ignoring Files in Git
1. Section 15 Introduction This video provides an introduction to this section. |
2. Introduction to Git Ignore This video provides an introduction to Git ignore. |
3. Git File Statuses: Untracked, Tracked, and Ignored This video explains the various Git file statuses including untracked, tracked, and ignored. |
4. Basic Git ignore Rules This video explains the basic git ignore rules. |
5. Pushing Repository with Ignored Files to Remote This video demonstrates the process of pushing repository with ignored files to remote. |
6. Committing Previously Ignored Files This video explains how to commit previously ignored files. |
7. Ignoring Previously Committed Files This video explains how to ignore previously committed files. |
8. Git ignore Common Practices and Templates This video explains how Git ignore performs common practices and creates templates. |
16. Detached HEAD
1. Section 16 Introduction This video provides an introduction to this section. |
2. Detached HEAD State This video explains the detached HEAD state in Git. |
3. Making Experimental Commits in Detached HEAD State This video demonstrates how to make experimental commits in a detached HEAD state. |
4. Retaining Changes Made in the Detached HEAD State This video demonstrates how to retain the changes made in a detached HEAD state. |
17. Advanced Git
1. Section 17 Introduction This video provides an introduction to this section. |
2. Cloning One of the Public Repositories This video explains how to clone one of the public repositories. |
3. Git Log Options: Oneline, Graph, and Stat This video explains the various Git log options, such as oneline, graph, and stat. |
4. Git Shortlog This video explains the Git shortlog command. |
5. Filtering Commits by Author or Keyword This video demonstrates the process of filtering commits by author or keyword. |
6. Pretty Formatting of Git Log This video explains how to perform pretty format with Git log. |
7. Filtering Merge Commits in Git Log This video demonstrates the process of filtering merge commits in Git log. |
8. Git Reset This video explains the Git reset command. |
9. Git Revert This video explains the Git revert command. |
10. Modifying the Last Commit Using the Amend Option This video demonstrates the process of modifying the last commit using the amend option. |
11. Cherry-picking Commits This video explains the cherry-picking commits in Git. |
12. Reflog - Log of All Git Operations This video explains the concept of reflog - log of all Git operations. |
13. Stashing Changes Using Terminal This video explains how to stash changes using Terminal. |
14. Stashing Using GitHub Desktop This video explains the process of stashing using GitHub Desktop. |
15. Garbage Collection This video focuses on the garbage collection command in Git. |
16. Squashing of Commits in GitHub This video explains the squashing of commits in GitHub. |
17. Interactive Rebasing with Squashing in the Local Repository This video focuses on the interactive rebasing with squashing in the local repository. |
18. Git Development Workflow This video explains the Git development workflow. |
18. GitHub Pages
1. Section 18 Introduction This video provides an introduction to this section. |
2. Creating a Simple Website Using GitHub Pages This video explains how to create a simple website using GitHub Pages. |
3. Hosting any Repository Using GitHub Pages This video explains how to host any repository using GitHub Pages. |
4. Creating a Basic React application This video explains how to create a basic React application. |
5. Preparing the React Application for Publishing to the GitHub Pages This video explains how to prepare the react application to publish it to the GitHub Pages. |
6. Fixing Errors with Cached Credentials Using SSH Instead of HTTPS This video demonstrates the process of fixing errors with cached credentials using SSH instead of HTTPS. |
7. Verifying a React GitHub Page This video explains how to verify a React GitHub Page. |
8. Configuring a Custom Domain for GitHub Pages This video explains how to configure a custom domain for GitHub Pages. |
9. Creating a Static GitHub Page Using Markdown This video explains how to create a static GitHub Page using markdown. |
19. GitHub Hooks
1. Section 19 Introduction This video provides an introduction to this section. |
2. Normal Git Workflow without Hooks This video explains the normal Git workflow without hooks. |
3. What are Git Hooks? This video explains the concept of Git hooks. |
4. How Git Hooks can Be Used in Practice This video demonstrates how Git hooks can be used in practice. |
5. Using a Pre-Commit Hook This video demonstrates how to use a pre-commit hook in Git. |
6. Enabling a Post-Commit Hook This video demonstrates how to enable a post-commit hook in Git. |
7. Disabling Rebasing Using a Pre-Rebase Hook This video demonstrates how to disable rebasing using a pre-rebase hook in Git. |
8. Matching an Author's Email against a Regular Expression This video demonstrates how to match an author's email against a regular expression. |
9. Why Local Git Hooks are not Pushed to the Remote This video explains why local Git hooks are not pushed to the remote. |
10. Cleaning Up the Local Git Hooks Repository This video demonstrates how to clean up the local Git hooks repository. |
11. Initializing a New Node.js Project This video demonstrates how to initialize a new Node.js project. |
12. Installing the Jest NPM Package for Testing This video demonstrates how to install the Jest NPM package for testing. |
13. Adding Multi and Sum Modules with Tests This video demonstrates how to add multi and sum modules with tests. |
14. Using the Pre-Commit NPM Package for Automation of the Pre-commit Hook This video demonstrates how to use the pre-commit NPM package to automate the pre-commit hook in Git. |
15. Cloning a Remote Repository and Verifying a Pre-Commit Hook This video demonstrates how to clone a remote repository and verify a pre-commit hook in Git. |
16. Replacing a Pre-Commit NPM Package with Husky This video demonstrates how to replace a pre-commit NPM package with Husky. |
17. Skipping All Git Hooks Using the -no-verify Option This video demonstrates how to skip all Git hooks using the -no-verify option. |
18. Introduction to Linter and Running Linter in the Pre-Commit Hook This video introduces you to linter and demonstrates how to run linter in a pre-commit hook. |
19. Introducing a Lint-Staged Package to Check only Staged Files This video demonstrates how to use a lint-staged package to check only staged files. |
20. Verifying Selective Linting and Testing Using Lint-staged This video demonstrates how to verify selective linting and testing using lint-staged. |
21. Adding a Post-Commit Hook This video demonstrates how to add a post-commit hook. |
22. Verifying Commit Message Using Commitlint This video demonstrates how to verify a commit message using the commitlint command. |
23. Git Hooks Summary This video provides a summary of Git hooks. |
20. Wrap Up
1. Wrap Up This video presents a summary of this section. |