Back to Git & Dev Tools
2026-04-056 min read

git merge (Git & Dev Tools)

Learn git merge (Git & Dev Tools) step by step with clear examples and exercises.

Why This Matters

In this full guide, we delve into the essential concept of git merge—a powerful tool that helps developers manage and combine changes from multiple branches within a repository. Understanding git merge is crucial for efficient collaboration, resolving conflicts, and maintaining the integrity of your codebase.

Prerequisites

Before diving into git merge, ensure you have a solid understanding of:

  1. Git Basics: Git Commands for Beginners
  2. Git Branches: Understanding Git Branches and Merging
  3. Resolving Conflicts: Git Conflict Resolution Guide
  4. Understanding Git Stash: Git Stash Explained
  5. Basic Knowledge of GitHub: Getting Started with GitHub

Core Concept

What is Git Merge?

In simple terms, git merge allows you to combine changes from two or more branches into a single branch. This process integrates the differences between the branches and creates a new commit that represents the merger. The result is a unified codebase that includes all the changes made in both branches.

Merging Branches

To merge one branch (branch1) into another (master), follow these steps:

Navigate to your repository

cd my-repo

Switch to the master branch

git checkout master

Pull any changes from the remote repository

git pull origin master

If you have uncommitted changes, stash them using git stash save

Switch to the branch you want to merge (branch1)

git checkout branch1

Prepare for a merge by telling Git about the branch you want to merge from

git merge master


Git will now attempt to automatically merge the changes. If there are any conflicts, you'll need to resolve them manually before the merge can be completed.

### Fast-forward Merge

In some cases, Git may perform a fast-forward merge. This means that the master branch is ahead of `branch1`, and no new commit is created. Instead, Git simply moves the master branch pointer to the latest commit on `branch1`. You can identify a fast-forward merge by looking for a message like "Already up to date."

### Merge Conflicts

Merge conflicts occur when Git encounters changes in the same lines of code between the two branches. To resolve conflicts, you'll need to manually edit the affected files and choose which version of the code to keep or merge. Once you've resolved all conflicts, save your changes, stage them for commit:

Stage the conflicted file

git add

Commit the resolution

git commit -m "Resolved merge conflicts"


### Merging Multiple Branches

To merge multiple branches at once, specify them in the `git merge` command, separated by spaces: `git merge branch1 branch2`. This will create a single merge commit that combines changes from both branches.

Worked Example

Let's walk through a simple example of merging two branches:

  1. Create a new branch (branch1) and make some changes to a file (file.txt):

Create the branch

git checkout -b branch1

echo "Changes in branch1" >> file.txt

git add .

git commit -m "Changes in branch1"


2. Switch back to the master branch and make some changes:

Switch back to master

git checkout master

echo "Changes in master" >> file.txt

git add .

git commit -m "Changes in master"


3. Create another branch (`branch2`) and make more changes to the same file:

Create the branch

git checkout -b branch2

echo "More changes in branch2" >> file.txt

git add .

git commit -m "Changes in branch2"


4. Merge `branch1` and `branch2` into `master`:

Switch to master

git checkout master

git merge branch1 branch2


5. Resolve any conflicts that may arise, save your changes, and commit the resolution.

Common Mistakes

  1. Forgetting to pull before merging: Always ensure you have the latest version of the remote repository by pulling before attempting a merge.
  2. Ignoring merge conflicts: Failing to resolve merge conflicts can lead to lost changes or inconsistencies in your codebase.
  3. Merging into the wrong branch: Be careful when specifying the target branch for the merge. Merging into the wrong branch can overwrite important changes.
  4. Not committing before merging: It's essential to commit any uncommitted changes on both branches before attempting a merge.
  5. Merging too early: Merging too soon can result in lost work if additional changes are made to either branch after the merge has begun but before it is completed.
  6. Not handling stashed changes: If you have uncommitted changes and decide to merge, make sure to stash them using git stash save before merging, or apply them using git stash apply after resolving conflicts.
  7. Merging with insufficient permissions: Ensure you have the necessary permissions to merge branches on both your local repository and the remote repository.
  8. Not cleaning up stashed changes: After resolving conflicts and committing the merge, don't forget to unstash any saved changes using git stash drop.

Practice Questions

  1. How do you merge branchA into master?
  2. You have a conflict during a merge. What steps should you take to resolve it?
  3. What happens during a fast-forward merge?
  4. Why is it important to pull the latest changes before merging?
  5. If you accidentally merge the wrong branch, how can you undo the merge?
  6. You have uncommitted changes and want to merge another branch. How should you handle this situation?
  7. What is the purpose of the git stash command in relation to merging branches?
  8. Can you explain the difference between a merge commit and a fast-forward merge?
  9. How do you squash commits during the merge process?
  10. How can you revert a merge if you're not satisfied with the results?

FAQ

Q: Can I merge multiple branches at once?

A: Yes, you can merge multiple branches by specifying them in the git merge command, separated by spaces: git merge branch1 branch2.

Q: What is a rebase and when should I use it instead of merging?

A: A rebase moves all the commits from one branch onto another, effectively creating a new commit history. It's useful for keeping a linear commit history and can help avoid merge conflicts in some cases. However, be cautious with rebasing as it may cause issues if other developers have already pulled changes from your repository.

Q: How do I squash commits during the merge process?

A: To squash commits during a merge, use the --squash option: git merge --squash branch1. After resolving the conflicts and committing the squashed commit, you can create a new commit with a custom message using git commit --amend.

Q: What is a merge commit and how can I avoid creating one?

A: A merge commit is a special commit that represents the integration of changes from two branches. To avoid creating a merge commit, you can use the --no-commit option when merging: git merge --no-commit branch1. This will leave the merge unfinished, allowing you to manually edit and stage the merged files before committing.

Q: How do I revert a merge?

A: To revert a merge, first reset your branch to the commit immediately before the merge: git reset --hard HEAD~1. Then, checkout the branch you want to revert from (the one that was merged) and merge it again: git checkout branch1 && git merge master.

Q: How do I cherry-pick commits instead of merging them?

A: To cherry-pick a commit, use the git cherry-pick command followed by the hash or short hash of the commit you want to apply: git cherry-pick . This will apply the changes from that specific commit without creating a merge commit.

Q: What is the difference between merging and rebasing in Git?

A: Merging combines changes from two branches by creating a new commit that represents the integration of both branches. Rebasing moves all the commits from one branch onto another, effectively creating a new commit history with the changes from the original branch on top of the destination branch. Both methods allow you to integrate changes from multiple branches, but they have different use cases and can affect your commit history differently.

git merge (Git & Dev Tools) | Git & Dev Tools | XQA Learn