on
215 words - 2 minutes to read
Git: The power of rebasing onto
The problem
Since I’m a benevolent and well-organised engineer, I always try to keep my Pull Requests (PR) quite small and focused on a single topic. The thing is, when I’m working on something big, I’m stacking PRs, like :
git checkout main
git branch branch-1
git commit -m "#1"
git commit -m "#2"
git commit -m "#3"
# Opening a PR and wait for my nice colleagues to review it.
git branch branch-2 # I'm branching from `branch-1`
git commit -m "#1"
...
This way, branch-2
contains every single commits from branch-1
.
The big work comes when branch-1
is squashed & merged on main
with a single merge commit.
Before, I was putting myself in a git-hell:
git checkout main
git pull
git checkout branch-2
git rebase main
Say hello to the conflicts !
When feeling brave, I was trying a hazardous git rebase -i
knowing that in case of another git drama, I could always count on git reflog
.
Well, you know what? there’s a better, easier way!
The solution
One can simply use rebase --onto
to specify the exact starting point we want to set.
In our example it will look like:
git checkout main
git pull
git checkout branch-2
git rebase --onto main branch-1 branch-2
🤯 boom! Don’t thank me 😏