`pull --rebase upstream` 的 magit(不是原点)

magit for `pull --rebase upstream` (not origin)

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

在命令行上,我会在使用

发出 PR 之前变基到 master
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 中可用,而不必使用前缀参数。

如果那样太麻烦,我建议在 .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

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

如果你打开 magit-pull-popup,会有一个 variable/option 来切换 rebase。