Bird
Raised Fist0
Gitdevops~10 mins

Merge commit creation in Git - Step-by-Step Execution

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Process Flow - Merge commit creation
Start on branch A
Make commits on branch A
Switch to branch B
Make commits on branch B
Run git merge A on branch B
Git compares changes
If no conflicts
Create merge commit
Merge complete
End with merged history
This flow shows how Git creates a merge commit by combining changes from two branches, handling conflicts if any.
Execution Sample
Git
git checkout main
# On main branch

git checkout -b feature
# Create and switch to feature branch

git add .
git commit -m "Add feature"
# Commit on feature

git checkout main
# Switch back to main

git merge feature
# Merge feature into main
This sequence creates a feature branch, commits changes, then merges it back into main, producing a merge commit.
Process Table
StepCommand/ActionState BeforeGit ActionState After
1git checkout mainOn any branchSwitch to main branchHEAD points to main
2git checkout -b featureOn main branchCreate and switch to feature branchHEAD points to feature, feature branch created
3git commit -m "Add feature"On feature branch with changes stagedCreate commit on featureNew commit added to feature branch
4git checkout mainOn feature branchSwitch back to main branchHEAD points to main
5git merge featuremain and feature branches divergedGit compares commits, creates merge commitmain branch updated with merge commit combining feature
6Merge completeMerge commit createdHistory now includes commits from both branchesBranches merged, working directory updated
💡 Merge commit created successfully, combining changes from feature into main
Status Tracker
VariableStartAfter Step 2After Step 3After Step 4After Step 5Final
HEADpoints to original branchpoints to featurepoints to featurepoints to mainpoints to mainpoints to main
main branchoriginal commitunchangedunchangedunchangedupdated with merge commitupdated with merge commit
feature branchdoes not existcreated at main commitadvanced by new commitunchangedunchangedunchanged
Key Moments - 3 Insights
Why does Git create a new merge commit instead of just moving the branch pointer?
Because the branches have diverged with different commits, Git needs a merge commit to combine histories, as shown in step 5 of the execution_table.
What happens if there are conflicts during the merge?
Git pauses the merge and asks you to resolve conflicts manually before creating the merge commit, which is not shown here but would interrupt step 5.
Does the merge commit change the feature branch?
No, the merge commit is created on the main branch; the feature branch remains unchanged, as seen in the variable_tracker after step 5.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table at step 3, what is the state of the feature branch?
AFeature branch is deleted
BFeature branch has a new commit
CFeature branch points to main
DFeature branch has no commits
💡 Hint
Check the 'State After' column for step 3 in the execution_table
At which step does HEAD switch back to the main branch?
AStep 4
BStep 3
CStep 2
DStep 5
💡 Hint
Look at the 'Command/Action' and 'State After' columns in the execution_table
If there were conflicts during the merge, what would change in the execution flow?
AGit would delete the feature branch
BGit would create the merge commit immediately
CGit would pause and require manual conflict resolution before committing
DGit would switch back to the feature branch automatically
💡 Hint
Refer to the key_moments section about conflict handling
Concept Snapshot
git merge <branch>
- Combines changes from <branch> into current branch
- If branches diverged, creates a merge commit
- If conflicts, manual resolution needed before commit
- Keeps history of both branches intact
- Merge commit has two parents
Full Transcript
This visual execution shows how Git creates a merge commit. First, you start on the main branch, then create and switch to a feature branch. You make a commit on feature, then switch back to main. When you run git merge feature, Git compares the histories. If no conflicts, it creates a merge commit on main combining both branches. The feature branch remains unchanged. If conflicts occur, Git pauses for manual resolution before completing the merge. The merge commit links both histories, preserving all changes.

Practice

(1/5)
1. What does a git merge <branch-name> command do in Git?
easy
A. Combines changes from the specified branch into the current branch with a merge commit
B. Deletes the specified branch from the repository
C. Creates a new branch named after the specified branch
D. Resets the current branch to the specified branch's state without merging

Solution

  1. Step 1: Understand the purpose of git merge

    The git merge <branch-name> command is used to combine changes from another branch into the current branch.
  2. Step 2: Identify the result of the merge

    This operation creates a merge commit that records the integration of changes from both branches.
  3. Final Answer:

    Combines changes from the specified branch into the current branch with a merge commit -> Option A
  4. Quick Check:

    Merge command = combine branches with commit [OK]
Hint: Merge means combine branches with a commit [OK]
Common Mistakes:
  • Confusing merge with branch deletion
  • Thinking merge creates a new branch
  • Assuming merge resets branch without commit
2. Which of the following is the correct syntax to create a merge commit from branch feature into the current branch?
easy
A. git merge feature
B. git merge -b feature
C. git merge --delete feature
D. git merge --reset feature

Solution

  1. Step 1: Recall the basic merge syntax

    The correct syntax to merge a branch is git merge <branch-name> without extra flags for a normal merge commit.
  2. Step 2: Evaluate the options

    git merge feature matches the correct syntax. The other options use invalid or unrelated flags.
  3. Final Answer:

    git merge feature -> Option A
  4. Quick Check:

    Simple merge = git merge branch [OK]
Hint: Use 'git merge branch-name' to merge simply [OK]
Common Mistakes:
  • Adding unnecessary flags like -b or --delete
  • Confusing merge with branch creation or deletion commands
  • Using reset flag which is unrelated to merge
3. Given the following commands executed in order:
git checkout main
git merge feature

What will Git do if there are no conflicts between main and feature and the branches have diverged?
medium
A. Reset main branch to feature branch state without commit
B. Delete the feature branch automatically
C. Create a merge commit combining changes from feature into main
D. Fail with an error asking to resolve conflicts

Solution

  1. Step 1: Understand the merge process without conflicts

    If there are no conflicts and the branches have diverged, Git will automatically create a merge commit combining changes from the feature branch into main.
  2. Step 2: Confirm no branch deletion or errors occur

    Git does not delete branches or reset branches automatically during merge without conflicts.
  3. Final Answer:

    Create a merge commit combining changes from feature into main -> Option C
  4. Quick Check:

    No conflicts + diverged = auto merge commit [OK]
Hint: No conflicts + diverged means merge commit created automatically [OK]
Common Mistakes:
  • Thinking feature branch is deleted after merge
  • Expecting errors when no conflicts exist
  • Confusing merge with reset or branch deletion
4. You run git merge feature but Git reports conflicts. What should you do next to complete the merge?
medium
A. Delete the current branch and recreate it to fix conflicts
B. Run git merge --abort to cancel the merge and delete the feature branch
C. Run git reset --hard to force merge without fixing conflicts
D. Manually fix conflicts in files, then run git add and git commit

Solution

  1. Step 1: Understand conflict resolution process

    When Git reports conflicts, you must manually fix the conflicting files by editing them.
  2. Step 2: Complete the merge after fixing conflicts

    After fixing, stage the changes with git add and finish the merge with git commit.
  3. Final Answer:

    Manually fix conflicts in files, then run git add and git commit -> Option D
  4. Quick Check:

    Fix conflicts, add, commit to complete merge [OK]
Hint: Fix conflicts manually, then add and commit [OK]
Common Mistakes:
  • Aborting merge and deleting branches unnecessarily
  • Using reset to skip conflict resolution
  • Deleting branches instead of resolving conflicts
5. You want to merge branch feature into main but avoid creating a merge commit. Which command should you use?
hard
A. git merge --no-ff feature
B. git merge --squash feature
C. git merge --ff-only feature
D. git merge --abort feature

Solution

  1. Step 1: Understand merge commit creation options

    The --squash option merges changes without creating a merge commit by combining all changes into one commit.
  2. Step 2: Compare other options

    --no-ff forces a merge commit, --ff-only only merges if fast-forward is possible, and --abort cancels merges.
  3. Final Answer:

    git merge --squash feature -> Option B
  4. Quick Check:

    Squash merges without merge commit [OK]
Hint: Use --squash to merge without merge commit [OK]
Common Mistakes:
  • Using --no-ff which forces merge commit
  • Confusing --ff-only with no commit creation
  • Trying to abort merge to avoid commit