Start learning with our library of video tutorials taught by experts. Get started
Viewers: in countries Watching now:
The course shows how to use Git, the popular open-source version control software, to manage changes to source code and text files. Using a step-by-step approach, author Kevin Skoglund presents the commands that enable efficient code management and reveals the fundamental concepts behind version control systems and the Git architecture. Discover how to track changes to files in a repository, review previous edits, and compare versions of a file; create branches to test new ideas without altering the main project; and merge those changes into the project if they work out. The course begins by demonstrating version control in a single-user, standalone context, before exploring how remote repositories allow users to collaborate on projects effectively.
Back in the chapter on branches, we talked about how you could have one local branch that stays rather closely in sync with the progress of another branch, and this process is called tracking. And as an example, I showed you how to text_edits could track master. The idea here is that we want to keep the two pretty closely in sync. So we're regularly going to pull updates from master and merge them into text edits. That way it never gets too far out of touch and even though it happens less frequently, whenever we are done with our work in text_edits, and we are ready to merge it back in, master is probably the branch that we want to merge it back into.
Now tracking is really common with remote branches, and it works in a similar way, plus with a little bit of configuration, we get to save ourselves some typing by letting the master branch know what remote branch should it be using when it's doing its fetch, and when it's doing it's push. We won't have to specify it each and every time. It will have a default setting by knowing its tracking branch. Now when we did our first Git push, we did it with the -u option, and I told you at that time, that that was about creating the tracking branch, and then we'd talk about it later. Well, that time is now.
If we don't do git push with the -u option, it does not track any remote branch. All it does is push our code up there, and that's it. It doesn't keep any kind of reference that this is the branch there we're going to be working with in the future. The -u option says push it up there, and also make a note of the fact because we're going to be coming back and working with this branch frequently. When we did a git clone to create our lynda_ version, it does track the remote branch, and we can see that tracking here, git/config. You can see that our branch master is set up to track the refs/heads/master that's on origin.
That's what it's going to track. That's how you know that it's a tracking branch. By contrast, let's switch back over. We'll go backwards a directory and then let's go into our explore_california folder, we can see the same thing is true here. If we do cat .git/config, but let's create one that doesn't track. Let's create one that doesn't have the -u option to see the difference. Let's create a branch off of master that we can then use. Let's do git branch, and let's call this branch non _tracking, that will make it clear what's up.
And then now, we know how to push that to origin, and we're going to push non_tracking. Wait one minute, it wants my credentials, okay, pushes it up there, and now let's take a look again at that git/config, and you will see that it does not have a listing here, right, push it up there but it said, all right! Here you go remote repository, I am done with you. There is not sort of connection in the future between our non_tracking branch and what's going on at GitHub.
The -u option or cloning it, created that tracking branch. Now I'm going to leave this non_tracking branch but I just want to let you know that if you ever end up with a branch that's not tracking, and you want to make it tracking, then you have three choices. Either you can come in and add these, so they are similar, or you can use the git config commands. It's git config branch and then whatever the branch name is. In this case, it would be non_tracking remote and then the name of the remote, origin, and then you would do the same thing for the option for merge refs/heads/master.
So that would give you those same configurations in the dot config file, or if you're using Git 1.7, which most of you should be unless you got an old version of Git for some reason, you could use git branch --set-upstream, which is also what the u option is, that -u that was used, when we did a push. That's the shortcut for set-upstream, and then we can say non_tracking origin, non-tracking, and that will tell it what its up-stream server is.
It will tell it what the remote is that it ought to track. So again, I'm going to do any of those. I am just going to leave it so that our non_tracking branch stays non_tracking, so that if we ever want to see the difference, we can switch over there and try it out.
Find answers to the most frequently asked questions about Git Essential Training.
Here are the FAQs that matched your search "":
Sorry, there are no matches for your search ""—to search again, type in another word or phrase and click search.
Access exercise files from a button right under the course name.
Search within course videos and transcripts, and jump right to the results.
Remove icons showing you already watched videos if you want to start over.
Make the video wide, narrow, full-screen, or pop the player out of the page into its own window.
Click on text in the transcript to jump to that spot in the video. As the video plays, the relevant spot in the transcript will be highlighted.