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

在命令行上,在发布带有

git pull --rebase upstream master


但是我该如何在magit中做到这一点? F命令允许使用--rebase,但据我所知,这始终违背我的origin

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

最佳答案

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中可用,而不必使用prefix参数。

如果太麻烦了,我建议在您的.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


然后让分支从其配置的上游拉出,但推送到您自己的存储库。

08-27 20:12