Git Going with Comparing, Branching and Merging
Git Going with Comparing, Branching and Merging
Are you sure how to compare between commits, branches or the three states of Git? Do merges cause you trouble? What is a rebase, anyway?
In this course, students will walk though comparing (diffs), branching, merging and rebasing in Git. At the end of this course, students will have a firm understanding and experience with those paricular aspects of Git. Note: This is not a comprehensive course on Git — we focus exclusively on comparing, branching, merging, and rebasing.
Recent Course Updates
- October 17: Added Updates and Errata section
Course Introduction and Overview provides an introduction to this course.
After the introduction, the first thing we do is Git Installation for both Windows and Mac. There are dedicated sections for Windows and Mac — so students can jump directly to the lectures specifically designed for their system. After the installation process, we will download the example project repository from GitHub (clone) which we will use throughout the course.
After installation and downloading the example project, we explore ways to make Comparisons in Git, including all the different local states, between commits, and between local and remote repositories.
We give great attending to Branching and Merging in Git. We start off with the simple “happy path” and learn about “Fast-Forward” merges and how to control them. The we walk through common “automatic” merges. Finally, we cause trouble on purpose so we can step through resolving conflicting merges with our visual merge tool.
With a strong foundation in branching and merging, we will then cover a more complex topic, Rebasing. In that section, we cover several rebasing examples, including how to resolve a rebase conflict.
All tools have installation and configuration sections to ensure no one is left behind.
Presentations provide audio/video training of conceptual ideas. Since few like slide-ware presentations, slide-presentations are kept to a minimum.
Screencasts provide a video of the instructor’s computer system with any actions, commands, or screens displayed and narrated. There is nearly 2 hours of screencast based video training in order to step through each command or action in sufficient detail.
This course is part of the “Git Going” series and is included with the Git Complete comprehensive course. If you are already enrolled in that course, do not enroll in this course.
This course makes extensive use of the command line. Each command is discussed in detail, so everyone can follow along.
An overview of the topics covered in this course, including branching, merging, and resolving conflicts in Git.
A guide to what software is going to be installed in this section for this course.
A guide to installing and setting up the source management tool Git for Windows.
A guide to installing the text editor Notepad++.
A guide to configuring Notepad++ to work better for this course.
A guide to installing the merge tool P4Merge.
A guide to configuring P4Merge on Windows.
Mac OS X Installation
An overview to the tools that will be installed in this section for this course.
A guide to getting the Apple provided version of the source control tool Git.
A guide to installing the text editor TextMate 2 on Mac OS.
A guide to configuring TextMate 2 to improve usability for the rest of this course.
A guide to installing the merge tool P4Merge on Mac OS.
A guide to configuring P4Merge on Mac OS.
Cloning the GitHub repository for this course onto your personal GitHub account and then downloading the repository onto your local system.
Comparing in Git
Setting up our Git Repository in order to be able to do comparisons in later lessons.
Using P4Merge in order to compare our current GIt repository to the staged changes of our Git repository.
Comparing our current working directory in Git to the last commit on the Git repository.
Comparing our Git staging area to the last commit on the Git repository.
Limiting a comparison to a single file to focus in on what changes were made to just that file.
Comparing any arbitrary commit to another arbitrary commit in Git.
Comparing commits between our local Git repository and our remote GitHub repository, in order to help with pulling down changes that may conflict.
Pushing our changes up to GitHub now that we have verified the changes, as well as general cleanup for this section.
Branching and Merging in Git
An overview of the basic branching techniques that will be covered in this section by creating our first branch on Git that isn't our Master branch.
Merging branches in the easiest way possible, in which the changes can be smoothly integrated with no issues.
Disabling the easy path to merging in order to complicate the merge history when needed.
Creating a slightly more complicated merge, in which changes from both branches can automatically be integrated in with each other.
Resolving conflicts that arise when the same code is changed in two different branches in our Git repository.
Cleaning up what we have done in this section and pushing those changes back up to our remote GitHub repository.
Rebasing in Git
A guide to basic rebaseing within Git, in which we will take two branches with different changes to create a cohesive linear commit history.
Setting up a conflict that will make our rebase process a bit more complex.
Aborting a Git rebase in case that isn't what is wanted.
Resolving merge conflicts in order to allow our rebase to continue.
Rebasing our local repository with our remote repository in order to create a linear history path between the two.
Cleaning up our repository after we are finished rebasing and pushing up those changes to our remote GitHub repository.
Updates and Errata
A guide to resolving the issue of Git not working after upgrading to a new version of Mac OS.
An review of the topics we covered in this course, including branching, merging, and resolving conflicts in Git.