如何为单个更改创建拉取请求?

10
我对git和github几乎一无所知,也不想了解。但是我碰巧在这里为一个开源项目做了一个两行代码的bug修复。出于合作精神,我想将其贡献回去。如果不会给我带来太多麻烦的话。
所以,很久以前我fork了该存储库,然后偶尔进行了一些自己的修改,最近才进行了这个两行代码的bug修复。所有内容都已经检入主分支并推送回原始版本库。现在我想为这个两行代码的bug修复创建一个pull request。似乎github没有提供这样的功能。
回顾过去,我可能应该在进行两行代码的bug修复之前先创建一个完全独立的项目分支,但是a)这对于只有两行代码的情况来说太过繁琐, b)当我编写这些代码时,我并不知道我会想要将其贡献回去。而且,现在为时已晚。
我可以创建一个新分支,但那仍然包含所有其他无用的更改。所以这对我没有任何帮助。我想从上游创建一个不包含我本地更改的新分支,然后重新进行这个修复。但是我看不到除了创建一个全新的fork之外的任何方法,而我不想创建一个全新的fork。

现在我的最佳解决方案是放弃:代码现在对我有效,这不是我的问题。有人有更好的计划吗?


密切相关的问题:在GitHub上仅为最新提交发送拉取请求 - sleske
我想从上游创建一个新分支,排除所有本地更改,然后重新做这个变更。你自己回答了你的问题。关于你列出的项目: a)这不会有太多行政麻烦 b)现在你知道了。我建议你从问题中删除所有基于意见的元数据,帖子的标题已经足够清楚,在下面的答案也与之相匹配。 - Jordan Stefanelli
1个回答

8
这个最简单的方法是:
  1. 在你当前的更改上设置一个分支,然后回到上游分支(你的提交必须基于上游存储库)
  2. 为拉取请求创建一个新的分支
  3. 挑选有错误修复的提交
  4. 推送并创建拉取请求
这样就完成了。
git branch my-changes
git stash #just in case you have uncommitted changes
git checkout -b bugfix upstream/master
git cherry-pick <bugfix-commit-sha>
git push --set-upstream origin bugfix

其中upstream是原始的派生仓库。


谢谢,这很好用!我会收藏这个问题,并希望再过一两年才必须理解其中的任何内容。 - Matthew Exon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接