Is it possible to merge changes from a central repo to a local branch without having to commit/stash the edits on the local branch and checkout master?
If I am working on local branch “work” and there are some uncommited changes, I use the following steps to get updates from the central repo into my working branch.
git stash
git checkout master
git pull
git checkout work
git rebase master
git stash pop
Usually there are no uncommitted changes in “work” and then I omit the stash steps.
What I would really like is something like the following:
git pull master (updates master while work branch is checked out and has changes)
git rebase master (rebases the updates into work branch uncommited changes are still safe)
Is there something easier than what I currently do?
You can do (on branch
work):git pull --rebaseboth pulls remote changes and rebases your local changes on top of the remote ones. I.e. essentially does what you show in your script.Local changes, of course, should be committed or stashed on
mergeorrebase(because if merge conflict happens, conflicting changes should be uncommitted for you to resolve them–but where would your local changes go then?)When you later decide to update
masterand to mergeworkbranch with it, it won’t cause problems, since changes pulled are the same. So you don’t have to updatemasterwhen you pull changes.