假设我们有一个upstreamgit存储库,它是项目的官方主页,origin是我们自己的远程git存储库(例如github fork).
在命令行中,我会在发布PR之前重新绑定到主服务器
git pull --rebase upstream master
Run Code Online (Sandbox Code Playgroud)
但我怎么用magit做这个呢?该F命令允许一个,--rebase但origin据我所知,这总是反对我.
理想情况下,我想在F菜单下使用一个命令来执行此操作,因为这对我来说是非常常见的操作.
在magit,您可以使用C-uprefix参数来允许您为推拉操作设置远程.你打算C-u F -r F upstream<RET>这样做.如果您还需要指定分支名称,可以将C-u前缀加倍:C-u C-u F -r F upstream<RET> master<RET>.在Magit的下一个版本2.1.0中,这将更易于访问,F -r o而不必使用prefix参数.
如果这太麻烦了,我建议你明确地设置上游.git/config; 然后所有拉动都将来自上游.您可以git branch -u upstream/master在本地分支上执行此操作,或者git branch -u upstream/master mybranch如果您在不同的分支上执行此操作.然后,无论您使用Magit还是git在命令行上,简单git pull --rebase或F -r F将从配置的分支拉出.
如果您需要在从不同的仓库中提取时使用自己的个人仓库,则可以随时设置单独的推送以进行推送和拉动.我知道没有方便的命令包装器,但如果你.git/config直接编辑,你可以这样做:
[branch "mybranch"]
remote = upstream
pushremote = origin
merge = refs/heads/master
Run Code Online (Sandbox Code Playgroud)
如果您正在执行此操作,并且将始终重新定位您的本地分支,您甚至可以添加:
rebase = true
Run Code Online (Sandbox Code Playgroud)
而且不必指定--rebase你拉的时间.
如果您想为整个仓库而不是单个分支执行此操作,您可以使用:
[remote]
pushdefault = origin
Run Code Online (Sandbox Code Playgroud)
然后让分支从他们配置的上游拉出来,但推送到你自己的回购.