WalzoneInterview Prep
📞 Interviewing soon? Practice with a realistic AI mock phone interview — it calls you, then scores you. First 15 min FREE →

Git · Intermediate · question 21 of 100

What is the difference between a "fast-forward" and a "recursive" merge in Git?

📕 Buy this interview preparation book: 100 Git questions & answers — PDF + EPUB for $5

In Git, a merge is used to combine changes from two or more branches into a single branch. There are two types of merges in Git: fast-forward and recursive.

A fast-forward merge occurs when the branch being merged has all of its changes in a straight line from the current branch. In other words, there are no changes on the current branch that are not already on the branch being merged. When a fast-forward merge occurs, Git simply moves the current branch pointer to the commit of the branch being merged.

Here’s an example of a fast-forward merge:

    # Create a new branch called "feature"
    git branch feature
    # Switch to the "feature" branch
    git checkout feature
    # Make changes and commit them
    echo "Some changes" > file.txt
    git add file.txt
    git commit -m "Add changes"
    
    # Switch back to the main branch
    git checkout main
    
    # Merge the changes from the "feature" branch
    git merge feature

In this example, the git merge command will perform a fast-forward merge, since the changes made in the "feature" branch are already in a straight line from the current branch.

A recursive merge, on the other hand, occurs when the branch being merged has changes that are not already in a straight line from the current branch. When a recursive merge occurs, Git will create a new commit that combines the changes from both branches.

Here’s an example of a recursive merge:

    # Create a new branch called "feature"
    git branch feature
    
    # Switch to the "feature" branch
    git checkout feature
    
    # Make changes and commit them
    echo "Some changes" > file.txt
    git add file.txt
    git commit -m "Add changes"
    
    # Switch back to the main branch
    git checkout main
    
    # Make changes and commit them
    echo "More changes" > file.txt
    git add file.txt
    git commit -m "Add more changes"
    
    # Merge the changes from the "feature" branch
    git merge feature

In this example, the git merge command will perform a recursive merge, since there are changes on both the "main" and "feature" branches that are not in a straight line from each other.

In summary, a fast-forward merge occurs when the branch being merged has all of its changes in a straight line from the current branch, while a recursive merge occurs when the branch being merged has changes that are not in a straight line from the current branch. Understanding the difference between these two types of merges can help you choose the right merge strategy for your project.

Reading is step one. Saying it out loud is the interview. Our AI interviewer calls your phone and runs a realistic Git interview — then scores it.
📞 Practice Git — free 15 min
📕 Buy this interview preparation book: 100 Git questions & answers — PDF + EPUB for $5

All 100 Git questions · All topics