用于`pull --rebase upstream`(非来源)的magit

时间:2015-03-12 17:22:56

标签: emacs magit

假设我们有一个upstream git存储库,它是项目的官方主页,origin是我们自己的远程git存储库(例如github fork)。

在命令行中,我会在使用

发布PR之前重新绑定到主服务器
git pull --rebase upstream master

但是如何在magit中执行此操作? F命令允许--rebase,但据我所知,它总是针对origin

理想情况下,我想在F菜单下使用一个命令执行此操作,因为这对我来说是非常常见的操作。

2 个答案:

答案 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 --rebaseF -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。