Getting the latest version from remote master branches.
$ git fetch $ git rebase origin/master Current branch master is up to date.
Create a new topic or feature branch from the master branch. Make sure you're in the master branch.
$ git checkout master Already on 'master' $ git checkout -b feature-x Switched to a new branch 'feature-x'
Let’s create some dummy commits.
$ touch foo1; git add foo1; git commit -m "foo1" $ touch foo1; git add foo1; git commit -m "foo1"
Inspired by David Baumgold’s great rebasing guide, find the last commit that your first branched off the master branch to create the feature-x branch.
$ git merge-base feature-x master 8454f7f3b1b9e224134d4336683597fb1ad290fa
Next, although optionally but if you like to have small and frequent commits, you should always squash, reword, or fixup your local changes through interactive rebasing before rebasing again the remote or origin master branch.
$ git rebase -i 8454f7f3b1b9e224134d4336683597fb1ad290fa
Or using different syntax, if you want to go back to previous commits before the current HEAD.
$ git rebase -i HEAD~2
Rebase interactively of both dummy commits.
reword b2dabc0 foo1 fixup d4add26 foo2 [detached HEAD 6af5a09] Add feature-x 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 foo1 [detached HEAD 7994cf7] Add feature-x 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 foo1 create mode 100644 foo2 Successfully rebased and updated refs/heads/feature-x.
If you realize that you’ve made a mistake after a successful rebasing, you can always undo it.
$ git reset --hard ORIG_HEAD
Rebasing against the master branch. In other words, changes in your feature-x branch will be reapply on top of the latest changes in master branch. Often you will need to fix or skip the conflict (something I need to practice more as I always messed up the merging).
$ git rebase origin/master
Optional steps, only if you encounter conflict.
$ git rebase --skip $ git rebase --mergetool $ git rebase --continue $ git rebase --abort
If you've already published your changes, in this case, feature-x branch has been pushed before to the remote server, you’ll need to force-push your changes. Although some said forced update is bad, but is a compulsory step especially after rebasing from master branch to topic/feature branch before publishing.
$ git push -f origin feature-x