Development Tools


Complete Git Guide: Understand and master Git and GitHub

Complete Git and GitHub guide (23 HOURS) - Master all Git features: commits, branches, merging, rebasing and squashing

4.65 (2085 reviews)


23 hours


Jun 2021

Last Update
Regular Price


Unlimited access to all SkillShare courses

What you will learn

Deeply understand how Git works under the hood

Use Git not just in terminal but also in graphical user interfaces like GitHub Desktop, SourceTree, Visual Studio Code

Learn different GIt objects - blobs, trees, commits and annotated tags

Create local and remote Git repositories

Perform basic and advanced Git operations

Learn how to perform rebasing and merging of the branches

Learn what is pull request and how to create pull request at GitHub

Contribute to public repositories using technique of forks and pull requests from the forked repository

Understand what is semantic versioning and how to use Git Tags in order to create software release versions

Learn advanced Git operations - squashing, cherry-picking, amending, reverting commits.


This course is all about Git and GitHub.

Understand HOW Git works and learn all Git features from basic commits to squashing and rebasing.

  • Blobs, Trees, Annotated tags, SHA1 hashes

If those terms are new to you - jump in and you will learn all about Git internals and afterwards practice basic and advanced Git features using multiple practice activities.

Become a master of Git, GitHub, GitHub Desktop, SourceTree and Visual Studio Code.

This is the most complete practical Git and GitHub guide here on Udemy that includes tons of practical activities. Most important is that you will learn how Git works and knowing it you will be able much more easier use Git features and fix mistakes in your development workflow. You can have zero knowledge about Git and GitHub. All will be taught from scratch, from basic to advanced features. If you want to get deep knowledge of Git and GitHub this course is for you!

We will start by exploring internal structure of the Git repository. You will learn that Git has 4 types of objects: blobs, trees, commits and annotated tags. Each object has unique SHA1 hash. Also all objects are stored in the folders. Every object has just single reference to it - SHA1 hash. Files are stored in blobs. Filenames are stored in other Git objects called trees.

I will explain you how to create new Git objects without using git commit and git add. After creating Git object in the Git repository you will checkout it to staging area and working directory (opposite direction to traditional Git flow)

Afterwards we will jump into tons of practice activities and use different Git and GitHub features

In practice sections you will perform multiple practice Git activities:

  1. Initialize new Git repository

  2. Make changes, add them to staging area and commit

  3. Create branches, checkout branches and merge branches

  4. Perform fast-forward and 3-way merges of the branches

  5. Resolve merge conflicts

  6. Move into detached HEAD state and make experimental commits there

  7. Perform rebasing of the branches

You will also learn and practice different GitHub features

  1. Connect local and remote repositories

  2. Pushing, fetching and pulling operations

  3. Open Pull Request

  4. Merge Pull Request

  5. Add software versions using Git Tags

  6. Create forks from other repositories

  7. Contribute to public repositories using technique of forks and pull requests

  8. Perform rebasing with squashing

You will use not just terminal and shell commands for performing Git operations. In parallel you will also use GUI applications that simplify routine day-by-day Git operations:

  • GitHub Desktop

  • SourceTree

  • VisualStudio Code

With this course you will get lifetime-long access to almost 200 lectures and tens of practical exercises. After the course you will become a guru of Git and GitHub and will be able easily perform basic and advanced Git tasks.

But most important is that you will UNDERSTAND Git.

You will also get 30-days money-back guarantee. No questions asked!

Don't wait and join the course now!


Complete Git Guide: Understand and master Git and GitHub
Complete Git Guide: Understand and master Git and GitHub
Complete Git Guide: Understand and master Git and GitHub
Complete Git Guide: Understand and master Git and GitHub


Introduction to the Git and GitHub


Section 1 Introduction

Git vs GitHub

Installation of the Git and configuration of the Shell

Section 2 Introduction

Installing Git on MacOS

Installing Git on Windows

Installing Git on Linux

Installing iTerm2 on the Mac

Installing custom shell Z-Shell on the Mac

Basic Shell commands

Section 3 Introduction

Shell commands - directory management

Shell commands - file management - PART 1

Shell commands - file management - PART 2

How Git works under the hood

Section 4 Introduction

Initialize new Git repository

Overview of .git folder

Git object types

Writing new Git object with git hash-object

JSON vs Git database

What is hash function

Hash functions overview

SHA1 Hash Function

How many files Git could store

Probability theory in Dice game

Git hash collision probability

Exploring Git objects with git cat-file command

Create new Git Blob based on the file

Git blobs don't store filenames

Contents of Git objects

What we have so far

Tree objects in Git

Git object permissions

Creating Git Tree object

Examining Tree Object

Working directory, Staging area and Git repository

Overview of current files distribution

Git read-tree

Read files in the staging area using git ls-files

Git checkout-index

How many folders could be created for objects

Section Summary

Basic Git operations

Section 5 Introduction

What is Commit

Configure Git author name and email

Creating first commit

Exploring commit object

Current project state overview

Basic Git commands

Adding new file to working directory

Git files lifecycle

Stage file

Unstage file using git rm

Commit changes

Exploring changes in Git repository

Current diagram of Git repository

Git branches and HEAD

Section 6 Introduction

Most common Git operations

Overview of the current project state

Installing GitHub Desktop

GitHub Desktop Overview

What is branch in Git

What is HEAD in Git

Third commit

Git repository changes after third commit

Checkout specific commit

Why do we need branches

Git branches management

Create new branch

Commit changes in the new branch

Explore commit in the new branch

Git reuses blobs with the same contents

Cloning, exploring and modifying public repositories

Section 7 Introduction

Cloning remote repository

Exploring contents of the cloned repository

Unpacking Git objects

Exploring cloned repository in GitHub Desktop

Installing text editor Visual Studio Code

Exploring Visual Studio Code

Commit changes in the cloned repository

Git diff command

Overview of the changes

Merging branches

Section 8 Introduction

Why branches merging is needed

Fast forward merge

Merging process

Fast forward merge in action

3-way merge

Performing 3-way merge

Observing Git repository after 3-way merge

Installing SourceTree

SourceTree in action

What is merge conflict

Creating merge conflict

Observing conflicts in staging area and working directory

Resolving merge conflict in Terminal

Resolving conflicts in VS Code

GitHub and remote repositories

Section 9 Introduction

What is Git hosting service

Creating GitHub account

Exploring first repository at GitHub

Creating another commit at GitHub

Creating new branch at GitHub

Making changes in the new branch

Cloning remote repository

What is remote repository

How remote repository empowers collaboration

Git push, fetch and pull

Section 10 Introduction

Overview of the push, fetch and pull Git commands

What is origin

List remote and local branches

What is tracking branch

Checkout remote branch

Git remote show origin

Git fetch in action

Git pull is 2-step process

How to perform git pull


Git pull with fast forward merge

Fetch remote changes manually

Merge FETCH_HEAD manually

Resolving conflicts during Git pull

Pushing to remote repository

Commit under another author

Remote and local branches are in sync now

Create remote branch based on local branch

Update tracking statuses of the branches

Remove remote branch using local terminal

Git show-ref

Pull requests

Section 11 Introduction

Collaboration between contributors

What is pull request?

Why pull request was named pull request

Pull request or Merge request

Pull request step-by-step

Create new repository at GitHub

Changing author of the last commit

Pushing branch to remote

Open pull request

Adding comments and approving pull request

Creating and publishing new branch using GitHub Desktop

Signing in to GitHub in the GitHub Desktop

Creating and merging pull request

Adding new collaborator under GitHub

Exploring own GitHub account

Opening and merging PR by collaborator

By default merging is allowed without approvals

Configure protected branch rule

Merging after required approve

Exploring pull requests in the public repositories

Working with issues at GitHub

Forks and contribution to the public repositories

Section 12 Introduction

Creating Fork

How to sync changes from the parent repository

Adding new upstream remote repository

Fetching changes from upstream

Synchronizing changes from upstream

How to open pull request from the forked repository

Plan for creating pull request from the forked repository

Removing repository collaborator

Forking repository

Committing changes in the forked repository

Open pull request from the forked repository

Approving and merging pull request from the forked repository

Git Tags

Section 13 Introduction

Git tags overview

Staging vs Production

Semantic versioning

Lightweight vs Annotated tags

Creating lightweight tags

Creating annotated tag

Exploring git tag object

Pushing tags to remote


Section 14 Introduction

Introduction to Rebasing

Merging vs Rebasing

How to perform rebasing

Rebasing - STEP 1

Rebasing - STEP 2

Creating new repository

Creating feature branch and making changes

Rebasing feature branch on top of master branch

Completing rebasing by performing merging

Exploring graph and commits in SourceTree

Deleteing feature branch and pushing to remote

Ignoring files in Git

Section 15 Introduction

Introduction go Git ignore

Git file statuses - untracked, tracked and ignored

Basic gitignore rules

Pushing repository with ignored files to remote

Committing previously ignored file

Ignore previously committed file

Git ignore common practices and templates

Detached HEAD

Section 16 Introduction

Detached HEAD state

Making experimental commits in detached HEAD state

Retaining changes made in the detached HEAD state

Advanced Git

Section 17 Introduction

Cloning one of the public repositories

Git log options - oneline, graph, stat

Git shortlog

Filtering commits by author or keyword

Pretty formatting of git log

Filter out merge commits in git log

Git reset

Git revert

Modifying last commit using amend option

Cherry-picking commits

Reflog - log of all Git operations

Stashing changes using terminal

Stashing using GitHub Desktop

Garbage collection

Squashing of commits at GitHub

Interactive rebasing with squashing in the local repository

Git development workflow

Wrap Up

Wrap Up


Alex10 October 2020

Thorough and complete. I'm very impressed that he manages in English as well--I don't have any trouble following the logic or tutorials in general. Adequately detailed explanations from the ground up. Four stars because of the heavy reliance on GitHub in case the learner intends to use Bitbucket or GitLab (which I intend to do). Still, these lessons will easily transfer and i'm very glad to have taken this course. Thanks for the content.

Vikas8 October 2020

This course contain all required contents , which is needed for Beginner I really enjoyed Can you add a command text file at the end of the course - which should contain all git commands at one place with their short description. Each time in order to recall what was the command used , I need to scroll around the course list to find the commands. Thank you Bogdan Stashchuk

Iulia7 October 2020

The course is structured well, Bogdan offers clear explanations and provides appropriate examples for each topic

Serhii6 October 2020

This course provides profound understanding of git technology and the way it works. Fits newbies as well as experienced programmers. Really recommend this one! You will have no regrets

Vikas3 October 2020

Phenomenal course, this is "THE" course you need to learn GIT inside out. The effort Mr. Bogdan has put up to bring this course shows, and I can vouch for a fact that no other course on the planet gives such a comprehensive learning on GIT. Words can't describe how good this course is. Hats off Mr. Bogdan, I thank you for your contribution to the community.

Pavel1 March 2020

Bogdan, thank you for the course! Udemy gave the best description for it, which is - Amazing, above expectations!

Danny22 February 2020

Nice course, but I would have liked to see more time spend on the more difficult stuff and less on the easy stuff. Also, more info on possible pitfalls and common problems that we may encounter. This is personal, but I prefer to see tools that work for win, mac and linux (e.g., not so for sourcetree). Very positive are the diagrams, which explain concepts very well. Moreover, I like your explanation of objects. Also positive is the quick response on questions.

Anna21 February 2020

Курс просто огонь! Я бы еще добавила про аутентификацию с помощью ssh-ключей на Githube и побольше про методологию gitflow, но это мелочи. Спасибо большое, Богдан! Теперь намного увереннее чувствую себя при работе с git.

Tarek16 February 2020

Great course !! I work with Git since long time and deep dive view offered in this course well structured and helped me understand things more. Thank you Bogdan.

Jeff10 February 2020

You definitely get to know exactly how git works both locally and with Github. There are lots of useful comments about how git is actually used by developers. Git is a mature program and has lots of features. Thanks for enlightening me Bogdan.

Moshe10 February 2020

Extraordinary! Probably the most detailed Git course on Udemy. Even though I have been already acquainted with Git, I learnt a lot of new features and possibilities. Thank you, Bogdan!

Peter4 February 2020

There are many courses about git out there but this one is probably one of the best. Going from basic git objects to most common workflow is much more insightful than just focusing on best practices.

Carlos3 February 2020

So far im impressed of how this course it's explained. Git is such an interesting software, and the instructor takes the time to explain every small piece of Git fundamentals. With this core knowledge it's really easy to understand the real workflow and what Git commands do behind scenes.

Sebastien1 February 2020

Outstanding course, the teacher goes very deep into the details of how git works. Before this course, I knew just basics git commands, now I have a very good understanding of git works. All is very clear. Thanks

Kineyfe29 January 2020

The content is excellent and fully prepared. I like it, it's very useful. From this course, I got very good and clear mental clue about git. Thank you Bogdan !


12/18/2019100% OFFExpired
5/10/202191% OFFExpired

Related Courses

Transforming Your Photos into Pieces of Digital Art
Transforming Your Photos into Pieces of Digital Art
Learn to Draw Digitally: Create Cute Drawings Using Basic Shapes
Learn to Draw Digitally: Create Cute Drawings Using Basic Shapes
Digital Illustration: Using Adobe Capture to Speed Up Your Workflow
Digital Illustration: Using Adobe Capture to Speed Up Your Workflow


Udemy ID


Course created date


Course Indexed date
Course Submitted by