Git

Git Merge vs Git Rebase

· 2 min read
Git Merge vs Git Rebase

TLDR

Both git rebase and git merge are used to synchronise changes between branches. The difference is git rebase will revise the commits but keep a clean organised history, while git merge will keep all the original commits and add ones automatically but gives out a circuit board like history.

Real world scenarios

Image you have two branches: feature and master. feature is from master, after some time, for some reason, master has some changes which feature doesn't have.

Git merge

git merge workflow

What git merge do:

  • Wouldn't change the commit timestamp
  • Wouldn't change the commit hash
  • Will create a new commit automatically
  • When there are many people are using the git merge in a project, it will cause commits across each other in history, in the end it will show the commits like a Circuit board.
git merge commit history

How to do git merge:

  • Step 1: git checkout feature . For example, git checkout feature/new_awesome_feature1.
  • Step 2: git merge master , might need to resolve some conflicts while doing this step.

Git Rebase

git rebase workflow

What git rebase do:

  • Change the commit timestamp
  • Change the commit hash
  • Not introduce any new commit automatically
  • Generate nice and organised git history, like the one in the following:
git rebase commit history

git rebase will move the current changes to upmost, and keep the current change history.

How to do git rebase:

  • Step 1: git checkout feature
  • Step 2: git rebase master , might need to resolve some conflicts while doing this step. Here we might rebase the code multiple times. So it is a good idea to squash all the commits into one.

Reference

https://www.atlassian.com/git/tutorials/merging-vs-rebasing