2010-04-15 59 views
10

是否有可能合并从中央回购到本地分支的更改,而不必提交/藏匿在当地的分支机构和结账主编辑?混帐合并切换到本地分支

如果我在当地的分支“工作”的工作,也有一些未提交的更改,我用下面的步骤来从中央回购更新到我的工作分支。

git stash 
git checkout master 
git pull 
git checkout work 
git rebase master 
git stash pop 

通常在“工作”中没有未提交的更改,然后我省略了存储步骤。

什么,我真的很喜欢的是像下面这样:

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) 

有什么比我目前做更容易?

+0

我非常惊讶,这仍是如此难以在Git中的事。作为一名长期的SVN用户,这种内置功能(无缝地将远程更改合并到修改后的工作副本中)是我的团队每天所依赖的功能。 – Spongman 2013-02-27 23:52:40

回答

12

你可以做(​​分支work):

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

git pull --rebase既拉远程变化和变基在远程的人的顶你的本地修改。即基本上做你在脚本中显示的内容。

局部的变化,当然,应致力于藏匿或在mergerebase(因为如果合并发生矛盾,冲突的变化应提交的为您解决这些问题 - 但如果将你的本地修改,然后去了?)

当您稍后决定更新master,并与它合并work分支,它不会造成问题,因为拉的变化是相同的。因此,您在更改时不必更新master

+1

谢谢@Pavel和@Pran。这是有效的,我需要意识到的是,在这一点上更新主控并不是必须的。当工作合并到master中时它会被更新。 – ScottS 2010-04-15 21:15:55

+0

它的工作原理。谢谢! – 2011-12-13 06:46:52

2

我不认为,如果你有未提交的更改就可以拉。

因此,你可以做线沿线的东西:

git stash 
git pull --rebase <remote> <branch> # Calls rebase instead of merge. 
git stash pop 
0

也许事情已经自2010年以来改变,但您可以从远程即使你有未提交的更改拉。您的本地更改将保持未提交,因此您可以在闲暇时区分或合并它们。

git pull origin master 

测试了Git版本1.9.5.msysgit.1

this SO answer