4

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

在命令行上,我会在发出 PR 之前重新定位到 master

git pull --rebase upstream master

但是我如何在 magit 中做到这一点?该F命令允许 a ,但据我所知--rebase,这总是对我不利。origin

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

4

2 回答 2

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将从配置的分支中拉取。

如果您需要在从不同的 repo 拉取时推送到您自己的个人 repo,您​​可以随时为推送和拉取设置单独的遥控器。据我所知,没有方便的命令包装器,但如果你.git/config直接编辑你的,你会这样做:

[branch "mybranch"]
remote = upstream
pushremote = origin
merge = refs/heads/master

如果您正在这样做,并且将始终重新定位您的本地分支,您甚至可以添加:

rebase = true

并且不必--rebase每次拉动时都指定。

如果您想为整个 repo 执行此操作,而不是单个分支,您可以使用:

[remote]
pushdefault = origin

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

于 2015-03-12T17:25:13.460 回答
1

如果您打开magit-pull-popup,则有一个变量/选项可以切换变基。

于 2016-05-03T17:19:39.757 回答