Github 桌面版:Rebase 与 Merge Commit,以保持 fork 最新

Github Desktop: Rebase vs Merge Commit, to keep a fork up to date

我为回购做出贡献的工作流程是

  1. 创建上游分支
  2. 将叉子克隆到我的本地
  3. 将更改推送到我的分支
  4. 创建一个 PR 以将我的更改合并到上游

有时在我进行更改时,其他开发人员可能会将他们的更改提交到上游,所以我想做一个 rebase 来更新我的分支。但是我注意到在下面的场景中,Rebase 和 Merge Commit 给了我不同的响应,

我测试的方法如下:

  1. 我创建了一个上游分支
  2. 我使用 GitHub Desktop 将我的 fork 克隆到本地,并将当前分支设置为我的 fork 分支
  3. 然后我在 upstream/master 分支中进行了更改并提交了它
  4. 当我点击“Rebase current branch”时,它告诉我当前分支是最新的,如下所示:
  5. 当我点击“合并到当前分支”时,它检测到上游发生了变化:

    upstream/master是上游的分支,muti/master是我fork的分支。

我的问题是,为什么 rebase 检测不到任何更改,而合并和提交检测到?

首先请注意,如果您有权访问 upstream 存储库,则不必为了推送修复分支和启动 PR(拉取请求)而分叉它。

您可以直接在上游存储库中完成所有这些操作。

其次,仅当当前分支与 upstream/master.
有不同的历史时,rebase 才会起作用 如果当前分支 HEAD 是 upstream/master 的祖先,则 rebase(upstream/master 顶部的当前分支)将是空操作。
但是合并(upstream/master 到当前分支)不会,因为从当前分支的角度来看,有一个提交(在 upstream/master 中完成)它没有。