从状态缓冲区调用magit-push-current
时P P
,Magit 2.1.0
问我在没有设置上游的情况下第一次将分支推到哪里。
如何让它像以前一样自动生成名称?
从状态缓冲区调用magit-push-current
时P P
,Magit 2.1.0
问我在没有设置上游的情况下第一次将分支推到哪里。
如何让它像以前一样自动生成名称?
Answers:
更新:到目前为止,下面提到的“推送分支”已经实现。有关更多信息,请参见有关分支的文档。
您必须设置一次上游分支。一旦你这样做,是P P推到和你将得到的状态缓冲器unpulled和unpushed变化表(假设存在的话)。
有多种设置上游分支的方法。您可以使用--set-upstream
推式弹出窗口中的开关:P -u P。或使用设置上游但不执行其他操作的命令:b u。
Magit现在还可以在创建新分支时自动设置上游分支,前提是“起点”是分支名称。这适用于本地和远程“上游”。但是请注意,如果您选择本地分支作为起点,那么这将无助于推动。从当前存储库推送到当前存储库显然是没有意义的,并且是不允许的。
因此,当“上游”分支实际上是另一个本地分支时,其P P行为就像未配置任何上游分支一样,其行为与完全相同P e。如果根本没有配置上游,则情况相同。
这是由于在GIT中的限制:一个只能关联一个其他分支与一些分支,该分支被当时称为“上游分支”。如果至少有一个“上游”分支和一个“发布”分支,那就更好了。我打算最终在Magit中实现。参见问题#1485。
因此,如果您只想按此按钮,P P则“上游”分支必须是“起源/主”,而不是“主”。
我正在考虑添加一个push变量,该变量始终在git push
没有任何参数的情况下运行。然后,这将完全取决于Git配置。
master
了但未设置上游,是否应该分支origin/master
以自动设置上游?
origin/master
设置origin/master
为上游分支,但我希望有origin/branch-name
作为上游。
P -p P <... completion ...> RET
请注意,它origin/branch-name
是作为补考候选人提供的,因此您不必键入它。
我使用以下建议,--set-upstream
当当前分支还没有上游时,它将自动启用:
(defun magit-push-arguments-maybe-upstream (magit-push-popup-fun &rest args)
"Enable --set-upstream switch if there isn't a current upstream."
(let ((magit-push-arguments
(if (magit-get-remote) magit-push-arguments
(cons "--set-upstream" magit-push-arguments))))
(apply magit-push-popup-fun args)))
(advice-add 'magit-push-popup :around #'magit-push-arguments-maybe-upstream)
结合ido完成,可以使用以下命令推新分支P P RET:
;; NOTE: requires ido-completing-read+
(setq magit-completing-read-function #'magit-ido-completing-read)
我只是使用创建新分支,b c
然后编辑该.git/config
文件以指向它,origin/branch
而不是四处逛逛magit 2的所有东西,但这似乎还是行不通的。
更改:
[branch "fix_something"]
remote = .
merge = refs/heads/master
至
[branch "fix_something"]
remote = origin
merge = refs/heads/fix_something
这行得通,但是我仍然没有在magit2中找到可以完成相同功能的键组合。尝试设置遥控器不起作用,因为它在原始位置尚不存在。
bu
。但这使用了,git branch --set-upstream-to
并且您知道,Git无法将不存在的分支设置为上游,因此Magit也不能。
some-branch-name
给了origin
遥控器,你可能只需要输入o TAB s TAB
你会得到你想要的名称。