Git 来自我自己的回购的相同分支的 Pull Request 的含义

Implications of Git Pull Request from an identical branch of my own repo

我是 Git 的初学者,但我熟悉许多基础知识和命令。

我有一个项目,其 git 历史如下所示:

* a1b2c3 (HEAD -> main) Merged develop/new-update into main
|
|    * b2c3d4 (develop/new-update) Final commit on this branch, new work complete
|    |
|    Many other commits in between...
|    |
|    * c3d4e5 Starting new work
|   /
| /
* d4e5f6 Previous version, long ago

最新提交 a1b2c3git checkout main 然后 git merge--squashdevelop/new-updategit commit 其他分支的阶段性集体变更。 现在,两个分支末尾的回购状态是相同的(git diff main develop/new-update 没有输出)


问题

现在,当我将其推送到 Github 时,它显示了“比较和拉取请求”通知,这让我感到困惑:

If these branches' end states are identical, why it it asking me to pull request ? What would the pull request do to the repo if I created and accepted it ?

我注意到 squash 合并提交只有一个父提交,就好像我在主分支上直接写了那些更改一样(开发分支说 X 提前提交,1 次提交在主要后面)。拉取请求是否会使开发分支 'point' 再次回到主分支?

我只在与其他人的项目合作时使用拉取请求,比如将我的分支的一个分支合并到原始分支中。我发现 this article 关于你自己的 repo 上的 pull requests,但它只讨论了用途,谷歌搜索 pull requests 只会带来分支有差异但尚未合并的例子;或涉及不同的回购协议。

如有任何见解,我将不胜感激。谢谢!

首先让我们明确一点:挤压合并不是任何类型的合并。正如您已经观察到的那样,它是在分支上创建一个正常的单亲提交。拓扑结构没有任何记录表明此提交“来自”develop/new-update。

其次,拉取请求实际上是合并请求。提议合并。

因此您要求将一个完全独立的分支 develop/new-update 合并到主分支中。好吧,为什么不呢?他们很久以前就在 d4e5f6 分道扬镳了。他们可能代表了两个不同的历史。

此外,请记住:

  • 将 A 合并到 B 是合法的,即使它们的差异为零,只是作为连接拓扑的一种方式。您可能希望这样做。

  • 您可以在形成拉取请求后,进行更多提交并推送它们。现在分支会有所不同。

所以 GitHub 不知道您的长期意图是什么。因此,它不会拒绝您启动拉取请求的可能性。如果它要反对,那将在稍后的过程中发生。