PR被原仓库合并后我的Fork仓库为何显示落后?是否会引发无限循环?
关于Fork仓库合并PR后的两个疑问解答
1. 为何Fork仓库显示“落后1个空合并提交”?
这是因为原仓库所有者合并你的PR时,选择了创建合并提交的方式(而非 squash 或 rebase 合并)。这个合并提交是原仓库新增的,只存在于原仓库的提交历史中——你的Fork仓库里只有你自己提交的代码变更,并没有这个由原仓库生成的合并提交,所以会显示“落后1个提交”。
至于这个提交没有文件变更,通常是因为你的分支和原仓库主分支可以直接快进合并,但原仓库可能设置了强制创建合并提交的规则(比如为了保留PR的合并记录),Git就会生成一个没有文件修改的空合并提交,仅用于标记这次PR合并的操作记录。
这个提交本来就不会出现在你的Git历史里,因为它是原仓库维护者在合并操作时生成的,并非你推送到自己Fork的内容。
2. 会不会形成无限循环?
不会。原因有两点:
- 当你把原仓库的这个合并提交拉取到自己的Fork仓库后,你的Fork和原仓库的提交历史就同步了,此时你如果向原仓库发起PR,Git会检测到两边没有差异,不会允许创建无变更的PR。
- 正常流程下,你应该是将原仓库的主分支同步到自己的Fork,而不是反过来给原仓库推这个合并提交。原仓库已经有这个提交了,根本不需要再合并一次。
内容的提问来源于stack exchange,提问作者NooneAtAll3
相关产品推荐
相关产品推荐

