I'm trying to rebase -i
a few commits that occurred a while back in my history. Say I have a log like this:
* 5e32fb0 (HEAD -> master) Add latest feature
* 106c31a Add new feature
* 2bdac33 Add great feature
...100 other commits...
* 64bd9e7 Add test 3
* 3e1066e Add test 2
* 26c612d Add test 1
* 694bdda Initialize repo
and I want to squash the 3 test commits. In these circumstances, git rebase -i HEAD~106
isn't very practical. What I'm looking for instead is something like git rebase -i 64bd9e7:26c612d
.
Does git have this sort of behaviour, and if so, how can I use it?
I had a look at this post, but it didn't answer my question.
Just use rebase -i
and squash only those commits.
git rebase -i <main_branch>
# Now just add `s` in front of all the commits you want to squash
If you have many commits, I'd suggest you to take a look at rebase --onto
-
git rebase --onto <final_base_commit> <initial_base_commit> <head>
git rebase --onto 694bdda 64bd9e7 5e32fb0
Note: Rewriting history is an advanced operation, so tread with care.