- Understand different types of merges in Git
- Learn how to perform fast-forward and three-way merges
- Master conflict resolution techniques
- Discover best practices for clean and effective merging
Understanding Types of Merges
Git uses different merge strategies depending on the branch history. The two main types of merges are fast-forward and three-way merges.
Fast-Forward Merge
Occurs when there is a direct linear path from the source branch to the target branch. No additional commit is created.
# Fast-forward merge example$  git checkout main$  git merge feature# Fast-forwardThree-Way Merge
Creates a new merge commit when the branches have diverged. Combines the histories of both branches.
# Three-way merge example$  git checkout main$  git merge feature# Merge made by the 'recursive' strategyBasic Merge Commands
Here are the essential commands you'll use when merging branches:
# Check branch status before merge$  git status # Update your current branch$  git pull # Merge a branch into current branch$  git merge branch-name # Merge with commit message$  git merge branch-name -m "Merge feature branch" # Abort a merge in case of conflicts$  git merge --abortMerge Strategies
Git offers several merge strategies to handle different scenarios:
Common Merge Strategies
- •recursive:Default strategy for branches with one merge base
- •ours:Resolves conflicts by keeping the current branch version
- •theirs:Resolves conflicts by keeping the merged branch version
Strategy Options
# Merge using specific strategy$  git merge feature-branch -s recursive # Merge with strategy options$  git merge feature-branch -X ours$  git merge feature-branch -X theirs # Merge and squash commits$  git merge --squash feature-branchHandling Merge Conflicts
Merge conflicts occur when Git can't automatically resolve differences between branches. Here's how to handle them:
Conflict Resolution Steps
- 1.Identify conflicted files usinggit status
- 2.Open conflicted files and look for conflict markers (<<<<<<<, =======, >>>>>>>)
- 3.Edit files to resolve conflicts, removing conflict markers
- 4.Stage resolved files and complete the merge with a commit
Conflict Resolution Commands
# Check status of conflicted files$  git status # After resolving conflicts$  git add resolved-file.txt # Continue merge after resolution$  git merge --continue # Abort merge if needed$  git merge --abortMerge Best Practices
- Update before merging:Always pull the latest changes from the target branch before merging 
- Test before merging:Ensure all tests pass in your feature branch before merging 
- Review changes:Double-check the changes being merged using git diff 
- Clean history:Consider using --squash for feature branches to maintain a clean history 
What's Next?
Now that you understand merging, in the next lesson you'll learn about:
- Working with remote repositories
- Setting up remote connections
