Let's begin our exploration of Git by gaining an understanding of what it is, and what it can do for you.
Git is software that keeps track of changes that you make to files and directories, and
it is especially good in keeping track of text changes that you make.
So let's imagine that you have a document, you have version 1 of that document, you make
some changes to it, now you have version 2, you make some more changes, and now you have version 3.
Well, Git keeps track of those three different versions for you, and it allows you to move
back and forth between different versions, to compare the different versions and to see
what changed between each one.
Because what it does is manage versions for you, Git is referred to as a Version Control
System or VCS for short.
Now certainly not the first Version Control System ever created, we're going to look at
a history of some of the most popular Version Control Systems in the next movie.
But virtually all Version Control Systems that have ever been created had one single
primary purpose in mind when they were created, and that was for managing source code.
Computer code that programmers and developers were writing to create programs.
They want to be able to track the changes they made over time as they added features,
fixed bugs, and that sort of thing.
So as a result, because that its primary purpose, I would say 90% to 95% of the time VCSs are
used for source code management. So we call them Source Code Management Tools or SCM for short.
So you'll see both of these abbreviations they can be used almost interchangeably.
Source Code Management is just a little more specific, because it really says we're using
a VCS for the purpose of managing our source code, but you'll want to become familiar with
both of these terms and recognize them as being almost synonymous.
Now whether you've ever worked with a Source Code Management tool before, or not, you've
definitely dealt with Version Control. Let's look at some examples of Version Control that
are non-source code related.
For example, you may have had different versions of files and given them different names so
that you could keep track of the versions.
So you have a budget that you are working on, you have version 1, version 2, version
3, you put a little text to the end of it to let you know which version this is so that
we can look back at old versions and see how it has changed over time.
You may do it as you create graphics so you have version 1 of a logo, version 2 of a logo, and so on.
I think we've probably all done this at some point, a lot of applications also offer some
form of Version Control as one of their features.
For example, Microsoft Word allows you to track the changes that you make to a document.
So you turn on Track Changes, and then you send the document to someone else, when they
make changes to that document they'll keep track of what changes they made, and when
they send it back to you, you'll be able to review those changes.
Adobe Photoshop has something called the History, you can bring up the History palette, and
you can look back at each of the changes you've made to an image, and you can even move backwards
through those changes, you can undo those changes and move back up in the History or
back forward in the History as well. You can move forwards and backwards and see how the
document changed over time.
Now if you've ever worked with a wiki, like Wikipedia, then you'll know that there is
also some form of version control that's there as well so that when someone contributes a
change to a Wiki page the editors have the ability to undo that change and go back to
a previous version if they need to, we call that process rolling back to a previous version.
And of course we've all done the most simple type of version control of all which is Undo,
Ctrl+Z on Windows, or Command+Z on Mac, it will just undo something that we've typed
or some change that we've made and allow us to go backwards, and you can do undo multiple
times and undo multiple changes, so to keep going backwards and backwards and backwards
through the different changes that we've made to a document.
Now these are all very, very primitive examples of Version Control and they are no match at
all four we're going to see with a Version Control System, but I think they do provide
useful metaphors for you to have in your head as to how we're keeping track of different
versions, how we're tracking the changes that happen to the document and how we're able
to move backwards and forwards to the history to bring up different versions at different
points in the change process.
But I think they do still provide useful mental metaphors for you to have in your head to
think about the way that a VCS works. Because ultimately they are all doing the same thing,
they are keeping track of different versions, they are allowing us to go forwards and backwards
in time to see different changes that have been made, and to even compare those changes
between different versions, and that's what we'll be doing with Git.
In the next movie let's take a look at the History of some of the most important Version Control Systems.