使用Magit更改分支的上游


47

当您使用Magit(带有P P)推送分支,而该分支没有上游时,Magit会询问您要推送到的分支的名称。那很棒。

但是,一旦您为分支设置了上游,Magit便不再询问您要将其推送到何处。通常这很方便(您不想每次都被询问),但是这使得将分支推送到另一个远程分支变得很困难。

即使当前分支已经有上游服务,Magit是否有办法让Magit再次询问我有关目标分支的信息?


用例

我有这样的分支是很常见的:

Local:    issue-30 ~/Git-Projects/repo/
Remote:   issue-30 @ origin (git@github.com:.../repo.git)
Head:     ebe4054 Some commit message

我想将本地和远程分支都更改为issue-30-and-34。如果我只是重命名Local分支,那么这里是:

Local:    issue-30-and-34 ~/Git-Projects/repo/
Remote:   issue-30 @ origin (git@github.com:.../repo.git)
Head:     ebe4054 Some commit message

即使我删除origin/issue-30,这样P Pissue-30-and-34 只会重新创建origin/issue-30

我最终要做的是以下操作,但是对于可以在单个git命令中完成的操作而言,它感觉有些round回:

  1. 创建一个新分支issue-30-and-34 (而不是重命名旧分支),
  2. 删除本地和远程版本issue-30
  3. 推送issue-30-and-34(因为它还没有上游,Magit会问我要推送到哪里)。

请考虑使用@tarsius而不是我的答案(以便更轻松地找到相关信息)。
君士坦丁

@Constantine完成。
马拉巴巴

Answers:


60

从开始,v2.1您可以使用将当前分支的上游更改为远程或本地分支bu[REMOTE/]BRANCHRET。从开始v2.4,如果已经设置了上游,则将其bu取消设置。再按u一次以设置新值。

从开始(v2.4如果上游未设置),您还可以在使用进行推送的同时设置上游pu[REMOTE/]BRANCHRET。系统会自动询问您将哪个分支用作上游。设置上游后,pu将推送到该位置而无需更改上游。因此,要更改上游,您必须使用上一段中描述的方法。

v2.4还可以使用之前,将要推送到的远程分支设置为上游分支p-ueREMOTE/BRANCHRET。但是现在默认情况下,--set-upstream开关不再在推式弹出窗口中可用。您可以通过设置为nil 来找回它。这有两个效果:下次重启后,该开关将再次可用,并且上一段中描述的方法将不再起作用。magit-push-current-set-remote-if-missing--set-upstream


如果要同时使用第二和第三段中描述的两个功能,请magit-push-current-set-remote-if-missing保持不变并将其添加到您的init文件中:

(magit-define-popup-switch 'magit-push-popup
  ?u "Set upstream" "--set-upstream")

11

按“ P C-u C-u P”使Magit在推送之前询问您要使用的远程分支。

(带有单个前缀参数(“ P C-u P”)Magit询问要使用的遥控器。)

我发现这个按P C-h k P在Magit状态缓冲,阅读的文档magit-pushmagit-push-dwim(这些文档似乎是过时了,顺便说一句),和试验。

PS:我使用Magit magit-1.2.0-2049-ge6839e8


5
这个答案有点过时了。
SzymonWygnański2015年

1

看起来现在位于分支/配置部分下:

b C p 设置pushRemote


除了默认以外,如何指定遥控器的任何想法?
scry

0

截至2016年11月,以及最新的magit,这是部分解决方案:

P e-允许您推动elsewhere,但不记得

我找不到让magit前进的方法--set-upstream,所以我只是从终端上做了这个,有点作弊,但这让我克服了这个问题:

git push --set-upstream origin <branch-name>

现在,新的上游已保存,我可以构建下一个东西:)


1
“我找不到方法…… --set-upstream”-也许您应该尝试阅读tarsius的答案
npostavs 2016年

当然,这就是帮助我弄清楚这一点的原因。只是,magit此后发生了一些变化,我希望我的解决方案可以节省某人几分钟的时间
Josh.F,2016年

1
该答案的第一段说明了如何更改上游,它在最新的magit中有效。
npostavs
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.