Github桌面版: "从<分支>更新"按钮

26
在Github(c)桌面应用程序的下面这张图片中,有一个名为“Update from master”(在本例中)的按钮。我想知道它触发了哪个确切的git功能。我主要想知道是否使用了mergerebase。(我找不到任何日志控制台)。

enter image description here

4个回答

28

GitHub Desktop中按钮背后的git命令文档不够完整,因此我曾进行过调查。我得出结论,"Update from..."按钮会发出

git merge --no-ff -m "Merge <auto_text> <branch_name>" <branch_name>

或者在 GitHub Desktop GUI 中将“Compare”分支设置为<branch_name>,或其基本相似的内容。

我是通过以下方式得出结论的:

首先,我将一个我控制的仓库 fork 到了我的 GitHub 帐户中。然后,我从我的 GitHub 帐户克隆了该仓库到本地机器上。接下来,我对(原始)主远程仓库进行了一些小改动,并使用git fetch <remote_name_assigned_to_main_repo>(此处为<remote_name>),将单个提交带到本地机器上。在这个fetch之后,“Update from...”按钮变亮了。

这样就建立了这样的一个场景:我本地仓库中检出的分支 master 比主远程仓库中的分支 master 慢一次提交。默认情况下,git merge <remote_name> 将会产生一个快进合并(没有合并提交)。

但是,使用“Update from...”按钮会导致以下reflog条目:

HEAD@{0}: merge <remote_name>/master: Merge made by the 'recursive' strategy.

而且在 日志 中有一个合并提交:

Merge remote-tracking branch '<remote_name>/master'

(根据手册,“递归”策略是在合并一个分支时的默认合并策略。)

我还设置了一个场景,在这种情况下,git rebase可能是一个选项,但看到了相同的合并行为。


4
GitHub 可能选择了这种设计,即使在快进式合并或变基更为适宜的情况下也需要一个合并提交,出于保守考虑。GitHub 桌面版用户可能是 Git 的新手,而合并提交可以使用 git revert 撤消,而快进式合并或变基则不能。 - SoFarther

4
当我将鼠标悬停在按钮上时,它明确地显示“从XX次提交合并”。

enter image description here


4

只需进入“分支”菜单,然后选择“合并到当前分支...”,选择您想要从中获取“更新”的分支即可。


3
不是这个问题的答案。 - ToolmakerSteve
1
这正是我一直在寻找的! - singmotor
当它说“将主分支合并到开发分支”时,这意味着来自主分支的所有内容都将发送到开发分支?保持两者同步? - Nicke Manarin
我正在寻找答案,想知道如果我的分支不是基于主分支而是另一个分支,那么这个命令会做什么?最终,我使用了上面的建议,而不是“从主分支更新”的选项。 - RAM237

2
GitHub官方表示只需使用git merge <defaultBranch>命令。在GitHub Desktop存储库的问题中,官方评论如下:
此菜单项向主窗口(在Electron术语中称为渲染器)发出update-branch消息。然后,updateBranch方法会查找您的默认分支(通常为master)。应用程序中的Git操作使用Git命令行,因此我们在应用程序中执行的只是将git merge master合并到当前分支中的操作。

1
虽然此链接可能回答了问题,但最好在此处包含答案的基本部分并提供参考链接。如果链接页面更改,则仅链接的答案可能变得无效。-【来自审核】 - Simas Joneliunas
1
@SimasJoneliunas 注意到了,我的回答已经更新。 - Mark S

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接