假设我们有一个upstream
git存储库,它是项目的官方主页,origin
是我们自己的远程git存储库(例如github fork)。
在命令行中,我会在使用
发布PR之前重新绑定到主服务器git pull --rebase upstream master
但是如何在magit中执行此操作? F
命令允许--rebase
,但据我所知,它总是针对origin
。
理想情况下,我想在F
菜单下使用一个命令执行此操作,因为这对我来说是非常常见的操作。
答案 0 :(得分:5)
在magit
中,您可以使用C-u
前缀参数来允许您为推拉操作设置远程。您可以输入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
中提供,而不必使用前缀参数。
如果这太麻烦,我建议您在.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
如果您正在执行此操作,并且将始终重新定位您的本地分支,您甚至可以添加:
rebase = true
并且不必在你拉动时指定--rebase
。
如果您想为整个仓库而不是单个分支执行此操作,则可以使用:
[remote]
pushdefault = origin
然后让分支从他们配置的上游拉出来,但推送到你自己的回购。
答案 1 :(得分:1)
如果您打开magit-pull-popup
,则会有一个变量/选项来切换rebase。