2013-03-01 83 views
6

我有一个devel分支和产地/主服务器已更新。我运行git pull,我可以看到远程更改。然而,当我之前做过git checkout devel时,我当地的主人仍然是我离开的地方。我想合并原产地/主人更改为我的devel分支;这种分支也存在于遥控器上。将本地主服务器从另一个分支更新到远程主服务器

我不希望结账主人分行,因为我最终将重建一个庞大的系统。我可以将我的本地主人从另一个分支移至原产地/主人?然后我可以从develmerge。或者更容易直接输入merge原点/主号码devel直接?这似乎会在稍后遇到麻烦?

编辑:另一种避免此问题的方法是在同一个存储库中使用不同的工作空间。
请参阅:git new workdir - 您可能同时检出了主档devel,但使用相同的.git存储库。

回答

8

更新之间唯一的区别你的本地masterorigin/master,然后合并它,只是与直接合并origin/master,是预先生成提交的合并消息(当然,假设你最终更新master)。所以我说只是合并在origin/master


这就是说,要回答这个问题:“我该如何更新本地非签出的分支,以配合其跟踪的分支”,你可以说

git push . origin/master:master 

这使用git push机械,但.的存储库意味着“当前的回购”。您的源分支指定为origin/master,远程分支指定为master,因此此更新master以匹配origin/master。你可以用管道命令git update-ref做同样的事情,但是使用git push更简单并且更安全一些(因为它会默认防止非快进合并,并且我相信它也会阻止推送到你的签出分支) 。

+4

嘿,这是一个与本地推,很好的一个很酷的伎俩,谢谢! – poke 2013-03-01 22:24:28

2

默认情况下,git pull将从远程分支中获取并合并到当前分支中。如果您在git pull命令中未指定分支,Git将使用您的分支指定的分支,通常是远程跟踪分支。

所以在你devel的分公司运行git pull会从远程获取devel的分支,并从那里合并更改,但不能从主。

请注意,仅运行git fetch将更新远程的所有远程分支。因此origin/master将在提取后更新,允许您仅使用git merge origin/master将该合并到当前分支中。

显然,这将不会更新您的本地虽然,所以你可能要稍后更新过,汇入你devel的分支到它。

相关问题