拉取请求仅用于选择性提交

时间:2019-01-27 20:04:22

标签: git github

我想对我准备对open-source project进行的某些更改进行PR。我已经分叉了存储库,并提出了changes来使应用程序运行。这些更改(我们将其称为“提交#1”)特定于我的构建,因此它们应仅存在于我的fork上,而不包含在对主存储库的任何拉取请求中。第二组更改(提交2)是PR中需要包含的内容。

为了成功地构建和运行代码,我在开发Commit#2时必须具有Commit#1。因此,我将Commit#1包括在我打算从中进行PR的功能分支中。准备好将提交#2提交到主仓库中后,我如何制作仅包括提交#2但不包括提交#1的PR?

我试图执行以下步骤:

  • 分叉主仓库
  • 进行更改并提交(提交#1)
  • 创建并切换到功能分支
  • 进行更多更改并提交(提交2)
  • 推上我的叉子

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

所需:我希望功能分支仅包含Commit#2,以便可以将其用于PR。

我应该怎么做才能仍然能够在本地构建(即,对提交1进行必要的更改),但是创建仅包含对提交2进行的更改的PR?

1 个答案:

答案 0 :(得分:1)

您可以基于上游创建一个新分支,然后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分支发出拉取请求。