Keeping Your Branch Current with Git Merge
When working with version control systems like Git, it’s common to work on feature branches while other developers contribute changes to the main branch (often named master
or main
). To benefit from these upstream changes in your feature branch, you need to integrate them. This tutorial explains how to use git merge
to incorporate changes from another branch into your current working branch.
Understanding the Scenario
Imagine you’ve created a branch called custom_branch
to work on a new feature. Meanwhile, other developers have been making improvements and bug fixes on the master
branch. You now want to bring those changes from master
into your custom_branch
so your feature is built on the latest codebase.
The git merge
Command
The git merge
command is the primary tool for integrating changes from one branch into another. The basic syntax is:
git merge <branch_name>
This command merges the specified <branch_name>
into your currently checked out branch.
Step-by-Step Integration
Here’s how to integrate changes from master
into custom_branch
:
-
Checkout Your Branch: First, ensure you’re on the branch you want to update. In this case,
custom_branch
:git checkout custom_branch
-
Fetch the Latest Changes (Important): Before merging, it’s crucial to update your local copy of the branch you’re merging from (in this case,
master
). This ensures you’re integrating the most recent changes. Usegit fetch
:git fetch origin master
git fetch
downloads the latest commits, branches, and tags from the remote repository (typically namedorigin
) without automatically merging them into your local branch. -
Merge the Changes: Now, merge the updated
master
branch into yourcustom_branch
:git merge origin/master
This command takes the changes from
origin/master
(the remote tracking branch) and applies them to yourcustom_branch
.
Understanding Merge Conflicts
Sometimes, the changes in the two branches conflict. This happens when the same lines of code have been modified in both branches. If a conflict occurs, Git will pause the merge process and mark the conflicting sections in the affected files.
You’ll need to manually resolve these conflicts by editing the files and choosing which changes to keep. Once you’ve resolved all the conflicts, stage the changes:
git add <conflicted_file>
And finally, complete the merge:
git commit -m "Resolved merge conflicts"
Using git pull
as a Shortcut
The git pull
command is essentially a shortcut for git fetch
followed by git merge
. It fetches the latest changes from a remote repository and immediately merges them into your current branch.
git pull origin master
While convenient, it’s important to understand that git pull
performs both operations. If you prefer more control over the process, it’s recommended to use git fetch
and git merge
separately.
Remote Tracking Branches
Throughout this tutorial, we’ve used origin/master
. This refers to a remote tracking branch. When you clone a repository, Git creates remote tracking branches that reflect the state of the branches on the remote repository (typically named origin
). These branches are read-only and serve as a reference point for merging and pulling changes.