从另一个分支更新本地主站到远程主站

时间:2013-03-01 22:16:34

标签: git

我有 devel 分支, origin / master 已更新。我运行git pull,我可以看到远程更改。但是,当我之前执行git checkout devel时,我的本地仍然是我离开的地方。我想将 origin / master 更改合并到我的 devel 分支;这样的分支也存在于遥控器上。

我不想检查分支,因为我最终会重建一个庞大的系统。我可以将本地从其他分支移至 origin / master 吗?然后我可以从开发merge。或者直接merge 来源/主人发展会更容易吗?那好像以后会有麻烦?

编辑:避免此问题的另一种方法是使用具有相同存储库的不同工作空间。
请参阅:git new workdir - 您可能同时拥有 devel 同时签出但使用相同的 .git 存储库。

2 个答案:

答案 0 :(得分:8)

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


那就是说,回答“如何更新本地非签出分支以匹配其跟踪分支”的问题,您可以说

git push . origin/master:master

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

答案 1 :(得分:2)

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

因此,在 devel 分支中运行git pull将从远程获取 devel 分支,并从那里合并更改,但不是从master合并。

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

显然,这不会更新您的本地,因此您可能希望稍后更新它,然后再将 devel 分支合并到其中。