6

我有一个开发 分支,并且origin/master已更新。我跑git pull了,我可以看到远程更改。但是,当我之前做的时候,我的本地主人仍然在我离开的地方git checkout devel。我想将源/主更改合并到我的开发分支;这样的分支也存在于遥控器上。

我宁愿不签出master分支,因为我最终会重建一个庞大的系统。我可以从不同的分支将我的本地master移动到origin/master吗?然后我可以做一个mergefrom devel。还是直接merge源/主开发更容易?好像以后会很麻烦?

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

4

2 回答 2

12

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更简单且更安全(因为默认情况下它会阻止非快进合并,而且我相信它也会阻止推送到您的签出分支)。

于 2013-03-01T22:21:47.247 回答
2

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

因此,git pull在您的开发分支中运行将从远程获取开发分支并从那里合并更改,而不是从主分支。

请注意,仅运行git fetch将更新远程的所有远程分支。Soorigin/master将在获取后更新,允许您使用git merge origin/master.

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

于 2013-03-01T22:22:22.520 回答