git - 仅针对选择性提交的拉取请求
问题描述
我想为我准备对开源项目进行的一些更改进行 PR 。我已经分叉了存储库并进行了必要的更改以使应用程序运行。这些更改(我们将它们称为 Commit #1)是特定于我的构建的,因此它们应该只存在于我的 fork 中,而不应该包含在对主 repo 的任何拉取请求中。第二组更改(提交 #2)是 PR 中需要包含的内容。
为了成功构建和运行代码,我必须在开发 Commit #2 时拥有 Commit #1。出于这个原因,我将 Commit #1 包含在我计划从中进行 PR 的功能分支中。一旦我准备好提交 Commit #2 以包含在主 repo 中,我怎样才能制作一个只包含 Commit #2 但不包含 Commit #1 的 PR?
我执行了以下步骤以尝试执行此操作:
- 分叉主仓库
- 进行更改并提交(提交 #1)
- 创建并切换到功能分支
- 进行更多更改并提交(提交 #2)
- 推到我的叉子上
观察到:我的 fork 中的功能分支包含两个提交,因此我不能将它用于 PR,因为它包括仅用于我的 fork 的更改(提交 #1)。
期望:我希望功能分支只包含 Commit #2,这样我就可以将它用于 PR。
为了仍然能够在本地构建(即从 Commit #1 进行必要的更改),但创建一个仅包含来自 Commit #2 的更改的 PR,我应该怎么做?
解决方案
您可以基于上游创建一个新分支,然后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
分支发出拉取请求。
推荐阅读
- c - 如何通过 FreeBSD 中的文件结构获取绝对路径?
- sql - 如何从多列中选择树
- ruby-on-rails - 如何在模型的两个深度关系中查询最终模型上的属性?
- php - 使用php比较提交和显示消息的复选框值
- android - Nestedscrollview/Scrollview 中的 Webview 缺少内容
- wordpress - 如何将转发器字段添加到个人资料表单 Ultimate 会员插件
- html - 创建一个运行 python http 服务器的 dockerfile 来显示一个 html 文件
- javascript - Fabricjs:显示横幅的预览
- mysql - 如何检查一个点是否在 MySQL 表的多边形内?
- node.js - 从 DynamoDB(节点 js)查询时排序键不正确