Thursday, April 7, 2016

Merging multiple commits into a single commit which are already pushed into a central repository

If you're merging local commits:

If the code is already pushed into a central repository and having multiple commits for a single fix/feature, now you wanted to merge couple commits into a single commit to make the git history clear.

Step 1: Identify how many last commits you wanted to merge ?

$ git reflog
4585fc6 HEAD@{0}: commit: fixig build scripts
c10447a HEAD@{1}: commit: fixing build issues
baa56c0 HEAD@{2}: commit: Using forked repo for testing
f744eec HEAD@{3}: commit: Missing tag
c30816d HEAD@{4}: commit: Missing tag
ea302be HEAD@{5}: commit: Removing bin folder
6560cb9 HEAD@{6}: commit: Build files and studio plugins folder structure

From above, I wanted to merge from HEAD@{0} to HEAD@{6} - That basically last 7 commits

Step 2: Rebase interactively

$ git rebase -i origin/master~7 master

Step 3:  Push the changes forcefully to a central repo

$ git push origin +master