Github 桌面版:Rebase 与 Merge Commit,以保持 fork 最新
Github Desktop: Rebase vs Merge Commit, to keep a fork up to date
我为回购做出贡献的工作流程是
- 创建上游分支
- 将叉子克隆到我的本地
- 将更改推送到我的分支
- 创建一个 PR 以将我的更改合并到上游
有时在我进行更改时,其他开发人员可能会将他们的更改提交到上游,所以我想做一个 rebase 来更新我的分支。但是我注意到在下面的场景中,Rebase 和 Merge Commit 给了我不同的响应,
我测试的方法如下:
- 我创建了一个上游分支
- 我使用 GitHub Desktop 将我的 fork 克隆到本地,并将当前分支设置为我的 fork 分支
- 然后我在 upstream/master 分支中进行了更改并提交了它
- 当我点击“Rebase current branch”时,它告诉我当前分支是最新的,如下所示:
- 当我点击“合并到当前分支”时,它检测到上游发生了变化:
upstream/master
是上游的分支,muti/master
是我fork的分支。
我的问题是,为什么 rebase 检测不到任何更改,而合并和提交检测到?
首先请注意,如果您有权访问 upstream
存储库,则不必为了推送修复分支和启动 PR(拉取请求)而分叉它。
您可以直接在上游存储库中完成所有这些操作。
其次,仅当当前分支与 upstream/master
.
有不同的历史时,rebase 才会起作用
如果当前分支 HEAD 是 upstream/master
的祖先,则 rebase(upstream/master
顶部的当前分支)将是空操作。
但是合并(upstream/master
到当前分支)不会,因为从当前分支的角度来看,有一个提交(在 upstream/master 中完成)它没有。
我为回购做出贡献的工作流程是
- 创建上游分支
- 将叉子克隆到我的本地
- 将更改推送到我的分支
- 创建一个 PR 以将我的更改合并到上游
有时在我进行更改时,其他开发人员可能会将他们的更改提交到上游,所以我想做一个 rebase 来更新我的分支。但是我注意到在下面的场景中,Rebase 和 Merge Commit 给了我不同的响应,
我测试的方法如下:
- 我创建了一个上游分支
- 我使用 GitHub Desktop 将我的 fork 克隆到本地,并将当前分支设置为我的 fork 分支
- 然后我在 upstream/master 分支中进行了更改并提交了它
- 当我点击“Rebase current branch”时,它告诉我当前分支是最新的,如下所示:
- 当我点击“合并到当前分支”时,它检测到上游发生了变化:
upstream/master
是上游的分支,muti/master
是我fork的分支。
我的问题是,为什么 rebase 检测不到任何更改,而合并和提交检测到?
首先请注意,如果您有权访问 upstream
存储库,则不必为了推送修复分支和启动 PR(拉取请求)而分叉它。
您可以直接在上游存储库中完成所有这些操作。
其次,仅当当前分支与 upstream/master
.
有不同的历史时,rebase 才会起作用
如果当前分支 HEAD 是 upstream/master
的祖先,则 rebase(upstream/master
顶部的当前分支)将是空操作。
但是合并(upstream/master
到当前分支)不会,因为从当前分支的角度来看,有一个提交(在 upstream/master 中完成)它没有。