Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

git merging changes to local branch

Tags:

git

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?

like image 427
ScottS Avatar asked Apr 15 '10 19:04

ScottS


2 Answers

You can do (on branch work):

git stash
git pull --rebase origin master
git stash apply

git pull --rebase both 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 merge or rebase (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 master and to merge work branch with it, it won't cause problems, since changes pulled are the same. So you don't have to update master when you pull changes.

like image 132
P Shved Avatar answered Nov 10 '22 15:11

P Shved


I don't think you can pull if you have uncommitted changes.

Therefore, you could do something along the lines of:

git stash
git pull --rebase <remote> <branch> # Calls rebase instead of merge.
git stash pop
like image 24
Pran Avatar answered Nov 10 '22 17:11

Pran