Are you completely new to version control systems & Git? Are you using Git commands but are not really sure how they work behind the scenes? Are you not able to use full power of Git?
If answer to any of these questions is yes, then this course can help you.
Git is one of the most elegant software tools that I've ever used. This is not just any other version control system. Git will change the way you work for better! Branching is the killer feature of Git that will make you more productive by allowing you to work on multiple things at same time.
To fully harness this power of Git, you need to know more than just commands. You need to understand the concepts behind those commands. Only then can you use Git with confidence and become super productive.
How this course will help you?
We have spent a lot of effort to design and record this course. We are not starting first lesson with typing commands. We spend some time understanding how version control systems work.
Then we explain the distributed version control systems. To know how Git is different than say SVN, you should know what is a distributed version control. You'll learn that here.
Then we start working with Git. We explain important concepts in separate lectures along the way just before we use those concepts. You'll learn a new concept and then immediately use those concepts with Git commands. This will teach you the concepts without getting bored.
We then learn what is a remote repository. We'll use Github for our remote repository. So you'll learn how to create a repository on Github, how to clone one from Github, create branches and much more.
This is a growing and a curated course. We've already added more than 5 Hrs of content that will get you started on any project you want. But we've a lot more to say. We'll be adding more advanced Git concepts and more lectures on them.
At the end of this course you'll be armed with the knowledge about Git commands & concepts behind them, which will allow you to tackle your daily version control tasks with confidence and use Git to its full potential.
Understand the version control systems in general. We'll see how a version control system works and learn some of the terminology that goes with version control system operations.
Currently there are two types of version control systems which are widely used. We'll learn what those popular types are and learn how a central repository based version control system works.
Distributed version control systems are becoming more popular. Git is also a distributed version control system. In this lecture we'll see how such systems work without getting into commands and other internals. This lecture will help you understand the git commands we'll be learning throughout the course.
This section focuses on using git on our local machine. This overview will outline the contents of this section.
Follow these simple instructions to install git on your computer. I've not added a lecture because the instructions provided on Git website are simple and easy to follow.
Here we'll create our first git repository. We'll learn about the 'git init' command and how it behaves under different circumstances.
Git staging area is a source of confusion for a lot of people. This lecture will explain the concept of various logical areas in git. We'll also map git commands to these areas.
In this lecture we'll do our first commit. We'll see how we can check local working area status, how to add files to staging area in commit using git commands.
Git log command shows us previous commits that are done in the repository. This lecture will explain the git log command and it's various options to customize the output.
Checking file difference is one of the most common operation you'll be doing when working with Git or any other version control system. This lecture will explain in great detail how to use the 'git diff' command and how to read the diff command's output.
Git checkout command has various uses. This lecture will explain one of the simple uses of git checkout command.
This lecture will explain the concept of references in Git. Branches, remote repositories and HEAD are some important references. We'll learn what they are and how Git uses them.
Learn the 'git reset' command in this lecture.
When programming, especially with a compiler, we get a lot of intermediate files. Learn how to ignore those files when we are committing our changes using the .gitignore file.
This section is all about branching in Git. Branching is the star feature of Git. This lecture will give you the overview of this section.
Before we start running commands related to branching, we'll learn the concept of branching in this lecture.
In this lecture we'll see how a git branch works. We'll then learn the commands to create a branch and to start using it.
Section about branching is not complete until we learn about merge. We'll learn the 'git merge' command in this lecture. We'll merge a git branch with another in this lecture.
Whenever there is a merge, there is a good chance of conflict. This section is all about merge conflicts. This lecture will provide overview about the concepts we'll be learning in this section.
Learn the Git concept of three way merge in this lecture.
In this lecture we'll see the three way merge in action. We'll learn how to identify when a three way merge has occurred.
This lecture will discuss the merge conflicts in detail. We'll see how to read the conflict information provided by Git. We'll then see how to resolve a Git merge conflict.
This section is about remote repositories. If you are working in a team then you'll be using a remote repository to share your changes with others. This lecture will outline the topics covered in this section.
This lecture will explain the concept of remote repositories. We saw them in distributed version control system lecture. In this lecture we'll see what is a common remote repository.
We'll setup a Github repository in this lecture. You'll learn how to use Github interface and setup your own repository.
We'll learn 'git clone' command in this lecture. We'll continue using Github as our remote repository.
This lecture explains two important commands when working with remote repository in Git. We'll learn how to send our changes to Github repository and get changes from Github to our local Git repository.
In previous lectures we used a Git repository on Github that was already initialized and had some files. This lecture tells you how to setup Github repository from your existing local Git repository.
Branching being the star feature of Git, discussion of remote repository is incomplete until we learn how to use branches with remote repository. In this lecture we'll learn how to create branch on Github using Github interface, and then get that branch into our local Git repository.
This important lecture will clarify the differences between 'git clone', 'git fetch' and 'git pull' commands.
This lecture will teach you how to put a branch created in local Git repository into remote repository.
Finally we'll learn how to delete a remote branch safely.
We are programmers and artists from UK, USA and South Africa. We met each other over the years during conferences & other work related encounters. We also brought some excellent people we knew to create Coffee Powered Crew.
Coffee Powered Crew is based on only one goal, that is, to create experts in the leading programming languages, technologies and software applications. You can move ahead of competition only if you are an expert in your field. We believe that to be an expert you need to know more than just the syntax and commands. An expert needs to understand the concepts & fundamentals behind the technology or programming language. You need a proper training & experience to become an expert. We hope to help you with the proper training.
We believe a good training needs to provide proper explanation of concepts. That means not just throwing out some word jumble while instructor is typing away the code. A proper focused lecture on each important concept before using & applying that concept makes a good training. We have hired people to create learning aids like animations & drawings to explain concepts properly.
We are hoping that we'll be part of your journey to success and we'll get a chance to help you learn something new that can help you move ahead in your career.
Coffee Powered Crew
I started out as a C++ developer & moved on to C# in year 2004 and then to Java in year 2006. Since then I've been working with all three languages and the platforms, frameworks and technologies they bring to the table.
I've been working on integrations, technology/platform migrations & all the middle-ware technologies that make it possible. Today I work as a consultant helping companies migrate legacy projects to cloud and implement DevOPs. I also work on developing new solutions that support the new & vast mobile device landscape.
Ultimately what matters is your understanding of fundamental concepts in software development & design that help you write better code & design better solutions. And those concepts rarely change. If you know them then it really doesn't matter how long you are coding, because anyone who really understands these concepts can always write better code and design better solutions.
Today the flood of new technologies can be overwhelming and confusing. But if you learn concepts behind them then you can pick up any new technology with ease. My goal is to teach these technologies by first explaining concepts behind them thoroughly and then move to commands & syntax.
I'm here to offer my experience with hope that I can explain these concepts in a way that anyone can understand & that it'll help someone.