为什么向upstream仓库提pull request前需在fork仓库新建分支提交改动?
为什么提交PR前要在fork仓库新建独立分支而非直接使用main分支
你提到的「直接推送改动到fork仓库的main分支提PR不会产生差异」的判断是正确的,单次提交PR的场景下两种操作的最终差异确实没有区别。要求新建分支是长期维护仓库、降低操作成本的最佳实践,核心原因有以下几点:
- 方便同步上游仓库的最新状态
你fork的上游仓库会持续更新,如果你把改动直接提交到自己的main分支,后续要同步上游代码时,未被合并的本地改动会和上游更新产生冲突,处理起来非常繁琐,甚至可能导致自己的代码丢失。如果使用独立的功能分支提交改动,你的main分支可以始终保持和上游仓库完全同步,执行git pull upstream main就能直接拉取最新代码,完全不会出现冲突。 - 支持同时提交多个独立PR
如果你需要同时提交多个互不相关的改动(比如修复两个不同的bug、提交两个独立的功能),全部堆在main分支的话,所有改动会被打包到同一个PR里,上游维护者无法单独合并其中某一个改动。如果每个改动都对应独立的分支,你就可以同时提交多个完全独立的PR,每个PR的审核、修改、合并操作都互不干扰。 - 保证PR提交历史干净可追溯
提交PR后如果维护者要求你调整代码,在独立分支上修改只会更新对应PR的提交记录,不会引入其他无关改动。如果使用main分支,很容易在调整过程中误拉其他代码、混入无关提交,导致PR的变更记录混乱,提高维护者的审核成本。 - 降低误操作的影响范围
如果后续你需要重置自己的fork仓库到上游最新版本,干净的main分支可以直接执行重置操作,所有改动都保存在独立分支里不会丢失。如果改动都存在main分支上,重置操作会直接清空你所有未合并的代码,恢复难度很高。
内容的提问来源于stack exchange,提问作者rajsh_956
相关产品推荐
相关产品推荐

