首页 > 解决方案 > 仅针对选择性提交的拉取请求

问题描述

我想为我准备对开源项目进行的一些更改进行 PR 。我已经分叉了存储库并进行了必要的更改以使应用程序运行。这些更改(我们将它们称为 Commit #1)是特定于我的构建的,因此它们应该只存在于我的 fork 中,而不应该包含在对主 repo 的任何拉取请求中。第二组更改(提交 #2)是 PR 中需要包含的内容。

为了成功构建和运行代码,我必须在开发 Commit #2 时拥有 Commit #1。出于这个原因,我将 Commit #1 包含在我计划从中进行 PR 的功能分支中。一旦我准备好提交 Commit #2 以包含在主 repo 中,我怎样才能制作一个只包含 Commit #2 但不包含 Commit #1 的 PR?

我执行了以下步骤以尝试执行此操作:

观察到:我的 fork 中的功能分支包含两个提交,因此我不能将它用于 PR,因为它包括仅用于我的 fork 的更改(提交 #1)。

期望:我希望功能分支只包含 Commit #2,这样我就可以将它用于 PR。

为了仍然能够在本地构建(即从 Commit #1 进行必要的更改),但创建一个仅包含来自 Commit #2 的更改的 PR,我应该怎么做?

标签: gitgithub

解决方案


您可以基于上游创建一个新分支,然后cherry-pick将要向上游发送到该分支的一个提交。

git checkout -b for-pull-request origin/master
git cherry-pick <Commit #2 SHA>
git push origin for-pull-request

然后使用for-pull-request分支发出拉取请求。


推荐阅读