Git Rebase
What is Git Rebase?
Rebasing moves or combines a sequence of commits to a new base commit.
It is often used to keep a clean, linear project history.
Rebasing can make your commit history easier to read by avoiding unnecessary merge commits.
When to Use Git Rebase
Use Git Rebase to:
- Keep a clean, linear project history
- Avoid unnecessary merge commits
- Combine multiple commits into one
- Edit or reorder commits
Basic Rebase
To move your current branch on top of another branch (e.g., update your feature branch with latest main):
Example: Rebase onto main
git checkout feature-branch
git rebase main
This reapplies your feature branch changes on top of the latest main
branch.
Interactive Rebase
git rebase -i <base>
lets you edit, reorder, squash, or fix up commits before a certain point.
This is useful for cleaning up your commit history before sharing it with others.
Example: Start Interactive Rebase
git rebase -i HEAD~3
This opens an editor where you can:
- pick: keep the commit as is
- squash: combine commits together
- edit: pause to change a commit
- reword: change just the commit message
Follow these steps:
- Edit the commit message or choose an action (pick, squash, edit, reword)
- Save and close the editor
- Git will apply the changes and let you review the results
Continue, Abort, or Skip
If you hit a conflict or need to finish editing a commit, use git rebase --continue
after resolving the issue.
This tells Git to keep going with the rebase process.
Example
git add fixed_file.txt
git rebase --continue
If something goes wrong or you want to stop the rebase, use git rebase --abort
.
This will put your branch back to how it was before you started rebasing.
Example
git rebase --abort
If you can't fix a commit during a rebase (for example, if a conflict can't be resolved), you can skip it with git rebase --skip
.
Git will leave out that commit and move on to the next one.
Example
git rebase --skip
Review Changes
After completing the rebase, review your changes to ensure everything is correct.
Tips & Best Practices
Rebasing rewrites commit history.
Avoid rebasing commits that you have already pushed to a shared repository.
Use git rebase -i
to edit, reorder, squash, or fix up commits before a certain point.
Use git rebase --continue
to continue a rebase after resolving conflicts.
Use git rebase --abort
to cancel a rebase in progress.
Troubleshooting
If you encounter conflicts during a rebase, resolve them and then use git rebase --continue
to continue the rebase process.
If you can't fix a commit during a rebase, use git rebase --skip
to skip it.
Note: Rebasing rewrites commit history.
Avoid rebasing commits that you have already pushed to a shared repository.