Suppose we have created two branches, namely master and work, we developed a few features and fixed a few bugs on the work branch, and we want to merge the bug fixes to the master branch. Below are the steps that should be carried out.
0. Check out the commits range
Make sure we’re at work branch. We can use either “git log” or a GUI tool like gitk to see what are the start and end commit SHA1 IDs. Below is a sample output of “git log”.
Suppose we want to merge the first two commits from the work branch to master branch. The SHA1 ID are 315125… and 46e768… respectively.
1. Check out a temporary branch
This can be done with the command below,
git checkout master
git checkout -b tmp
This branch tmp will be the same as master branch. And now we’re at tmp branch.
2. Move work branch ahead
This can be done with the following command,
git branch -f master 315125
We only need to provide the first few digits of the SHA1 ID, git is smart enough to figure it out the rest. This will set the master branch to contain all the commits up to commit 315125.
3. Rebase
This is done with command below,
git rebase –onto tmp 46e768~1 master
46e768 is the start commit number we want to merge to master branch. This will rebase master branch to tmp branch + all commits between 46e768 and 315125. Since tmp branch contains the what the original master branch contains. This is equivalent to adding commits from 46e768 to 315125 to master branch.
In case there’s any conflicts, we’ll need to resolve the conflict and run
git rebase –continue
After it’s done, we’ll be at master branch, ready to push the changes.
One comment on “git: Merge A Range of Commits from One Branch to Another”
Leave a Reply Cancel reply
40% Discount on My Book — Android NDK Cookbook
Android NDK Cookbook ebook 40% discount with promotion code MREANC40 at Packt Publishing The promotion code is valid until 15th June.Categories
- Android Apps (18)
- Android Audio Editor (1)
- TS 2 (3)
- Video Converter Android (8)
- Video2Gif (1)
- Android Tutorial (27)
- Android Dev Tools (1)
- API illustrated (8)
- Multimedia API (3)
- ffmpeg on Android (4)
- NDK (6)
- UI (6)
- Animation (2)
- Code Snippet (2)
- Coding Beyond Technique (18)
- a word, a world (4)
- Bug Rectified (4)
- Programming Habit (1)
- Software as a Career (1)
- Software as User Experience (1)
- Compilers and Related (2)
- ELF (2)
- Computer Languages (31)
- C/C++ (13)
- Java (9)
- JavaScript (2)
- PHP (1)
- Python (8)
- Data Structure & Algorithms (29)
- Bits (1)
- Data Structure (5)
- Integers (10)
- BigInteger (1)
- Prime (4)
- Search (3)
- Sorting (5)
- Strings (5)
- Database (1)
- SQLite (1)
- Digital Signal Processing (33)
- Distributed Systems (17)
- Apache Cassandra (6)
- Apache Hadoop (8)
- Apache Avro (3)
- Apache Nutch (3)
- Apache Solr (1)
- Linux Study Notes (40)
- crontab (1)
- Linux Kernel Programming (8)
- Linux Programming (12)
- IPC (2)
- Linux Network Programming (5)
- Linux Signals (2)
- Linux Shell Scripting (1)
- ssh (3)
- Machinery (30)
- misc (1)
- My Ideas (1)
- My Project (3)
- Mobile Caching (1)
- Selective Decoding (2)
- My Publication (1)
- My Readings (1)
- Networking (15)
- Program for Performance (8)
- Uncategorized (1)
- Virtual Machine (2)
- Web Dev (8)
- web components (3)
- Android Apps (18)
Recent Comments
Archives
- May 2013 (2)
- April 2013 (1)
- March 2013 (4)
- December 2012 (2)
- November 2012 (6)
- October 2012 (6)
- September 2012 (3)
- August 2012 (13)
- July 2012 (15)
- June 2012 (3)
- May 2012 (8)
- April 2012 (4)
- March 2012 (13)
- February 2012 (19)
- January 2012 (9)
- December 2011 (11)
- November 2011 (12)
- October 2011 (4)
- September 2011 (12)
- August 2011 (16)
- July 2011 (15)
- June 2011 (6)
- May 2011 (10)
- April 2011 (13)
- March 2011 (20)
- February 2011 (4)
- November 2010 (2)
- May 2010 (1)
- April 2010 (1)
- February 2010 (1)





Hi,
first of all a great thanks – a really really handy usage scenario.
Have a question though:
Am I right to think that repository state will be pretty much the same as if we’d cherry-picked changes into master?