So far we've seen how to create new branches, and we've seen how to switch between branches.
In this movie we're going to take a look at how we can both create and switch branches
at the same time so that we don't have to type both commands.
Let's just review, we do git branch, we're on the new_feature branch that we created,
and if I do git log --oneline you'll remember that this is the new commit that I made right here.
I modified the title of index.html.
I can also take a look at that commit with git show, and I can either copy and paste
the SHA that references it, or the HEAD pointer points at that commit right now.
So git show HEAD will show me that change, it'll show me that commit and what I changed.
So let's say that the change we want to make now is we want to make a new branch where
we want to try out shortening the title, the title now has gotten to be very long, and
we're going to try to shorten it.
So what we're going to do is create a new branch and check it out at the same time.
What we're going to do is use the checkout command with the -b option;
-b means both created and switch at the same time.
You can think of it as check this out as a new branch, it's a little bit counterintuitive,
you might be thinking well the branch is the thing that creates the new one.
Why am I not using the branch command? It's not that way, it's the checkout command.
Put this stuff in my working directory as a new branch, that's what it's telling it.
Now we need to give our branch a name.
The first branch we created we just called new_ feature which is pretty generic and not very useful.
You want to try and give your branches useful, meaningful names so that when you look at
them in your branch list you'll know what they refer to.
So we're going to call this one shorten_title, that should be pretty clear what we were trying to do.
So switch to new branch shorten_title, it created it and checked it out and switched
to it all at same time, and we can see that with git branch.
So now we are on our shorten_title branch.
Let's do git log --oneline, and notice that it includes the commit that we made to the
new_feature branch.
What we did was we didn't make a branch off of master, we made a branch off of new_feature.
So we were on new_feature, and if that's the branch that we were on at the time, if that's
where the HEAD is then that's where the branch will be created off of.
I could've switched back to master and then created the branch from there, and it would
not include that commit, the dc9ca3c commit.
But I wanted that commit in there, I wanted the long title because now I am going to try
and shorten that title.
So let's do that, let's open this up and inside index.html you can see that the change is
there, and I am just going to take out the Welcome to.
We're just going to make this Explore California - Affordable Outdoor Tours, that's a shorter
title, and that works for us.
So let's save it, close it.
Now we know how to make basic commits, git status.
Before we add this and make the commit I just want you to notice here that checkout was
the command that we used earlier when we wanted to discard changes in the working directory.
And remember at the time I told you that we use the dash dash to make it unambiguous that we are
not trying to check out a branch, we're trying to check out just the file.
So dash dash says from the current branch, that's what it's telling us, don't change branches, that's
not what I am trying to do here to check out. I'm trying to just check out the file.
So checkout essentially does double-duty for us. It'll checkout branches, but it'll
also go to the repository and checkout files for us.
Essentially checkout is saying, put this stuff in my working directory.
So now let's add it, so git add index.html,
git commit, and we're going to give it a message "Shorten the title of index.html."
That describes what my commit does.
Now if we say git log --oneline, you can see here it is. I have my dc9 commit followed by
the 6a2a3f5 commit.
If we now git checkout our new_feature branch, and we do our git log --oneline, you'll see
that it's not there.
If we do git checkout of master, and then we output our log file, you'll see that neither
one of those is there.
So you can switch back and forth to these, and each time go check and see, take a look
at what's inside index.html and see the difference between them.
You also can check out the shorten_title branch and use that git log with some of those
options that I gave you like --graph, --oneline, --decorate, --all.
And notice now it gives me the different commits, and you can see that it shows me the tip of
each one of those branches; master has this tip, new_feature ends with this one.
Right now, HEAD is on the shorten_title one, and so both of those point to this last commit.
Feel free to switch between branches, make more commits until you get comfortable, and
you really understand how the switching works because it's something that you're going to
be doing all the time in git, and you really should feel comfortable with it.