Github 桌面:"Update from <branch>" 按钮

Github Desktop: "Update from <branch>" button

在下面这张来自 Github(c) 桌面应用程序的图片中,有这个按钮 "Update from master"(在本例中)。我想知道是否有人知道它触发的确切 git 函数是什么。如果使用 mergerebase,我主要感兴趣。 (我找不到任何类型的日志控制台)。

GitHub 桌面中按钮下的 git 命令没有详细记录,所以我调查了一会儿。我得出的结论是 "Update from..." 按钮已发送

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

或与 GitHub 桌面 GUI 中 "Compare" 分支设置为 <branch_name> 几乎相同的内容。

我是这样得出结论的:

首先,我将我控制的存储库分叉到我的 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.

并且 log 中的合并提交:

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

('recursive' 策略“......是拉动或合并一个分支时的默认合并策略。”根据手册。)

我还设置了一个场景,其中 git rebase 可能是一个选项,但看到了相同的合并行为。

当我将鼠标悬停在按钮上时,它明确显示 "Merge XX commits from "

只需进入 "Branch" 菜单,然后 "Merge into current branch..." 并选择要从中获得 "update" 的分支。

GitHub 他们自己说只是 git merge <defaultBranch>.

引用 GitHub 桌面库中 issue 的官方评论:

This menu item emits the update-branch message to the main window (what we call the renderer in Electron terminology). The updateBranch method then looks for your default branch (typically master). Git operations in the app use the Git command line, so what we're doing in the app is just a git merge master into your current branch.)