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
English | MP4 | AVC 1280×720 | AAC 48KHz 2ch | 18 Hours | 7.73 GB

Complete Git and GitHub guide. Master basic and advanced Git features: commits, branches, merging, rebasing, squashing.

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:

  • Initialize new Git repository
  • Make changes, add them to staging area and commit
  • Create branches, checkout branches and merge branches
  • Perform fast-forward and 3-way merges of the branches
  • Resolve merge conflicts
  • Move into detached HEAD state and make experimental commits there
  • Perform rebasing of the branches

You will also learn and practice different GitHub features

  • Connect local and remote repositories
  • Pushing, fetching and pulling operations
  • Open Pull Request
  • Merge Pull Request
  • Add software versions using Git Tags
  • Create forks from other repositories
  • Contribute to public repositories using technique of forks and pull requests
  • 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.

What you’ll 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.
Table of Contents

Introduction to the Git and GitHub
1 Intro
2 Section 1 Introduction
3 Git vs GitHub

Installation of the Git and configuration of the Shell
4 Section 2 Introduction
5 Installing Git on MacOS
6 Installing Git on Windows
7 Installing Git on Linux
8 Installing iTerm2 on the Mac
9 Installing custom shell Z-Shell on the Mac

Basic Shell commands
10 Section 3 Introduction
11 Shell commands – directory management
12 Shell commands – file management – PART 1
13 Shell commands – file management – PART 2

How Git works under the hood
14 Section 4 Introduction
15 Initialize new Git repository
16 Overview of .git folder
17 Git object types
18 Writing new Git object with git hash-object
19 JSON vs Git database
20 What is hash function
21 Hash functions overview
22 SHA1 Hash Function
23 How many files Git could store
24 Probability theory in Dice game
25 Git hash collision probability
26 Exploring Git objects with git cat-file command
27 Create new Git Blob based on the file
28 Git blobs dont store filenames
29 Contents of Git objects
30 What we have so far
31 Tree objects in Git
32 Git object permissions
33 Creating Git Tree object
34 Examining Tree Object
35 Working directory Staging area and Git repository
36 Overview of current files distribution
37 Git read-tree
38 Read files in the staging area using git ls-files
39 Git checkout-index
40 How many folders could be created for objects
41 Section Summary

Basic Git operations
42 Section 5 Introduction
43 What is Commit
44 Configure Git author name and email
45 Creating first commit
46 Exploring commit object
47 Current project state overview
48 Basic Git commands
49 Adding new file to working directory
50 Git files lifecycle
51 Stage file
52 Unstage file using git rm
53 Commit changes
54 Exploring changes in Git repository
55 Current diagram of Git repository

Git branches and HEAD
56 Section 6 Introduction
57 Most common Git operations
58 Overview of the current project state
59 Installing GitHub Desktop
60 GitHub Desktop Overview
61 What is branch in Git
62 What is HEAD in Git
63 Third commit
64 Git repository changes after third commit
65 Checkout specific commit
66 Why do we need branches
67 Git branches management
68 Create new branch
69 Commit changes in the new branch
70 Explore commit in the new branch
71 Git reuses blobs with the same contents

Cloning exploring and modifying public repositories
72 Section 7 Introduction
73 Cloning remote repository
74 Exploring contents of the cloned repository
75 Unpacking Git objects
76 Exploring cloned repository in GitHub Desktop
77 Installing text editor Visual Studio Code
78 Exploring Visual Studio Code
79 Commit changes in the cloned repository
80 Git diff command
81 Overview of the changes

Merging branches
82 Section 8 Introduction
83 Why branches merging is needed
84 Fast forward merge
85 Merging process
86 Fast forward merge in action
87 way merge
88 Performing 3-way merge
89 Observing Git repository after 3-way merge
90 Installing SourceTree
91 SourceTree in action
92 What is merge conflict
93 Creating merge conflict
94 Observing conflicts in staging area and working directory
95 Resolving merge conflict in Terminal
96 Resolving conflicts in VS Code

GitHub and remote repositories
97 Section 9 Introduction
98 What is Git hosting service
99 Creating GitHub account
100 Exploring first repository at GitHub
101 Creating another commit at GitHub
102 Creating new branch at GitHub
103 Making changes in the new branch
104 Cloning remote repository
105 What is remote repository
106 How remote repository empowers collaboration

Git push fetch and pull
107 Section 10 Introduction
108 Overview of the push fetch and pull Git commands
109 What is origin
110 List remote and local branches
111 What is tracking branch
112 Checkout remote branch
113 Git remote show origin
114 Git fetch in action
115 Git pull is 2-step process
116 How to perform git pull
117 What is FETCH HEAD
118 Git pull with fast forward merge
119 Fetch remote changes manually
120 Merge FETCH HEAD manually
121 Resolving conflicts during Git pull
122 Pushing to remote repository
123 Commit under another author
124 Remote and local branches are in sync now
125 Create remote branch based on local branch
126 Update tracking statuses of the branches
127 Remove remote branch using local terminal
128 Git show-ref

Pull requests
129 Section 11 Introduction
130 Collaboration between contributors
131 What is pull request
132 Why pull request was named pull request
133 Pull request or Merge request
134 Pull request step-by-step
135 Create new repository at GitHub
136 Changing author of the last commit
137 Pushing branch to remote
138 Open pull request
139 Adding comments and approving pull request
140 Creating and publishing new branch using GitHub Desktop
141 Signing in to GitHub in the GitHub Desktop
142 Creating and merging pull request
143 Adding new collaborator under GitHub
144 Exploring own GitHub account
145 Opening and merging PR by collaborator
146 By default merging is allowed without approvals
147 Configure protected branch rule
148 Merging after required approve
149 Exploring pull requests in the public repositories
150 Working with issues at GitHub

Forks and contribution to the public repositories
151 Section 12 Introduction
152 Creating Fork
153 How to sync changes from the parent repository
154 Adding new upstream remote repository
155 Fetching changes from upstream
156 Synchronizing changes from upstream
157 How to open pull request from the forked repository
158 Plan for creating pull request from the forked repository
159 Removing repository collaborator
160 Forking repository
161 Committing changes in the forked repository
162 Open pull request from the forked repository
163 Approving and merging pull request from the forked repository

Git Tags
164 Section 13 Introduction
165 Git tags overview
166 Staging vs Production
167 Semantic versioning
168 Lightweight vs Annotated tags
169 Creating lightweight tags
170 Creating annotated tag
171 Exploring git tag object
172 Pushing tags to remote

173 Section 14 Introduction
174 Introduction to Rebasing
175 Merging vs Rebasing
176 How to perform rebasing
177 Rebasing – STEP 1
178 Rebasing – STEP 2
179 Creating new repository
180 Creating feature branch and making changes
181 Rebasing feature branch on top of master branch
182 Completing rebasing by performing merging
183 Exploring graph and commits in SourceTree
184 Deleteing feature branch and pushing to remote

Ignoring files in Git
185 Section 15 Introduction
186 Introduction go Git ignore
187 Git file statuses – untracked tracked and ignored
188 Basic gitignore rules
189 Pushing repository with ignored files to remote
190 Committing previously ignored file
191 Ignore previously committed file
192 Git ignore common practices and templates

Detached HEAD
193 Section 16 Introduction
194 Detached HEAD state
195 Making experimental commits in detached HEAD state
196 Retaining changes made in the detached HEAD state

Advanced Git
197 Section 17 Introduction
198 Cloning one of the public repositories
199 Git log options – oneline graph stat
200 Git shortlog
201 Filtering commits by author or keyword
202 Pretty formatting of git log
203 Filter out merge commits in git log
204 Git reset
205 Git revert
206 Modifying last commit using amend option
207 Cherry-picking commits
208 Reflog – log of all Git operations
209 Stashing changes using terminal
210 Stashing using GitHub Desktop
211 Garbage collection
212 Squashing of commits at GitHub
213 Interactive rebasing with squashing in the local repository
214 Git development workflow

Wrap Up
215 Wrap Up