我有 devel 分支, origin / master 已更新。我运行git pull
,我可以看到远程更改。但是,当我之前执行git checkout devel
时,我的本地主仍然是我离开的地方。我想将 origin / master 更改合并到我的 devel 分支;这样的分支也存在于遥控器上。
我不想检查主分支,因为我最终会重建一个庞大的系统。我可以将本地主从其他分支移至 origin / master 吗?然后我可以从开发做merge
。或者直接merge
来源/主人到发展会更容易吗?那好像以后会有麻烦?
编辑:避免此问题的另一种方法是使用具有相同存储库的不同工作空间。
请参阅:git new workdir - 您可能同时拥有主和 devel 同时签出但使用相同的 .git 存储库。
答案 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 分支合并到其中。