Rebasing is one of the features you probably want to have, if you plan to work on a neat git based project.
If you know how many commits you make, to rebase you use
git rebase with
-i flag to enable interactive rebasing. The
HEAD~<n> corresponds to the number of commits you have done (e.g. HEAD~4 if you have 4 commits to rollback to get to common ancestor commit).
Sometimes, you commit a lot and forgot how many commits you'd make. To know the least common anscestor you have with master, you do
git merge-base with your branch name as parameter.
The above command will return a git hash which you can use on the
git rebase command.
If you already know the git hash, then you can rollback to that specific commit and moving all current changes to unstaged. Once, the editor pop-ups you will choose which commit to retain, squash, and reword.
If you've already rebased your changes and needed to get lastest changes from master. All you have to do is rebase to the latest changes from master. This command will do that.
In any case, you've encountered some conflict first resolve it then continue in rebasing instead of creating new merge commit.
Once all is done, overwrite your remote repo latest changes if you've pushed it. This will do a force push ignoring current ref on remote repo.
Did something wrong on merging conflicts? Don't worry you can still see your previous changes using the command
git reflog short for reference log.
You can checkout the reference hash then re-merge your changes.