给上游 pr,自己应该先 pr 到自己的 main 分支吗?

2025 年 3 月 15 日
 albert0yyyy
我用 ai 进行脱敏了:

工程师小明在 main 分支上进行了 A 、B 、C 、D 四次提交。

工程师小红在 A 节点 fork 了项目,并在 sub 子分支上进行开发。

现在小红想将 sub 子分支的代码合并到上游的 main 分支。

她应该先合并到自己 fork 的 main 分支,

还是可以直接将 sub 子分支合并到上游的 main 分支?
3155 次点击
所在节点    git
7 条回复
albert0yyyy
2025 年 3 月 15 日
ai 是这么回答的,好像都可以:

直接合并到上游的 main 分支:

小红可以直接从 sub 子分支创建一个 Pull Request ( PR )到上游的 main 分支。

这样做的好处是减少了不必要的中间步骤,但需要确保 sub 子分支与上游 main 分支没有冲突。
先合并到自己的 main 分支:

小红可以先将 sub 子分支合并到自己 fork 的 main 分支,然后再从自己的 main 分支创建一个 PR 到上游的 main 分支。
这样做的好处是可以在自己的仓库中先解决潜在的合并冲突,确保代码的稳定性。

无论选择哪种方法,都需要确保在合并前从上游 main 分支拉取最新的代码,以减少冲突的可能性。
smyle
2025 年 3 月 15 日
我见过的几乎都是从自己的分支直接往 upstream 主分支合并,我个人也认为这应该是最佳实践之一。自己 fork 的主分支仅仅和 upstream 主分支保持同步就好,避免无谓的冲突。
比如说,你合并到自己的主分支后,这时候上游主分支又有新变化,如果和你的提交冲突了,你还得额外处理
itechify
2025 年 3 月 15 日
直接 pr ,有冲突再 pull ,拉最新代码处理冲突
w2040w
2025 年 3 月 15 日
这种情况(上游 main 有更新) pull 后 rebase 到自己的 sub 子分支也能看到有没有冲突吧?
sentix
2025 年 3 月 16 日
我偏向 rebase 到上游 main 后再合
boris1993Jr
2025 年 3 月 16 日
同意 @smyle #2 的做法。
main 分支仅用来保持与上游同步,并在新功能开发时作为基础分枝。不直接往 main 分支 commit 或 merge 自己的东西。
向上游 PR 那就是自己的功能分枝 PR 到上游的 main ,在合并后更新自己 fork 的 main 。
guanzhangzhang
2025 年 3 月 17 日
fork 后拉完自己仓库添加上游 git remote add upstream https://github.com/xxx/xxx

后续再修复第二个 pr 以下大概步骤
git checkout master
git fetch upstream
git rebase upstream master
git checkout -b fix-xxxx
code .
git add -A
git commit -s -m 'fix xxxxx'
git push fix-xxx
大概这样

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1118662

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX