那个标题令人费解,但情况本身并不那么复杂。
[我正在为其主分支A
贡献一个开源项目。它有一个待处理的PR B
,我希望很快将其合并到master中。我正在C
中的我自己的分支中开发一些新功能,但是我需要在B
中完成更改才能继续进行。我知道我可以merge B
into C
with no problems。问题是-当以后我想将B
包含在C
中时,这会带来麻烦吗?到那时,它们两个都可能彼此独立地合并在C
中。那会创建不必要的多余提交吗?
我们唯一可以给出的答案是也许或取决于。
您可能会问:取决于什么?,这变得有些复杂。 Git本身没有PR。拉取请求本身(与此相关的分支)具有特定于任何一个特定托管提供者的详细信息。
A
存在于其中。在同一托管提供程序上有your
分支,第三个存储库。您自己的计算机(例如笔记本电脑)上可能至少还有一个Git存储库。[如果从字面上合并来自PRB
的提交,以便将其父作为此PR B
的尖端提交的提交添加到存储库中,那么您已经添加了此PR的实际提交及其实际哈希到存储库和分支机构的ID(也许在笔记本电脑上,也许在托管服务器上)。但是,如果您使用copies
PRB
提交的操作,例如B
或B
或git merge --squash
,那么您将得到different提交。一些网络托管clicky的“合并此”按钮可以制作此类副本,而不是使用原始副本。拥有原始存储库的人有一个类似的选择:他们实际上可以合并PR git cherry-pick
的尖端提交。如果they
从字面上进行合并,而you从字面上进行合并,则Git会尽力而为,尽力而为。但是,如果他们使用的是copies个提交的进程,则无论您是否还从此PRgit rebase
复制了这些提交,他们将拥有与您不同的提交集。当然,将PR B
提交给上游的人都可以自行撤消它,并通过新提交重新提供它。 (确切的机制可能取决于托管服务器。)所有这些都使我们回到了一个不太令人满意的答案:这取决于。