Send a pull request on GitHub for only latest commit
我在GitHub上分配了一个项目,并成功地对本地的主程序进行了更改,并在GitHub上推到了原点。我想发送一个请求,但只想包括最后一次提交。github.com上的pull-request用户界面显示了最后9次提交,我不知道如何过滤。
我试图理解我是否应该创建一个新的本地分支,检查并以某种方式重置或重新设置上游?然后将我的主服务器上一次提交(按ID)应用到新的本地分支,并将其用于拉请求?
我正在努力使概念正确,并找出正确的命令行来做我需要的事情。
基本上,您需要创建一个新的分支&cherry,选择要添加到该分支中的提交。
Note: you might need these before the checkout/cherry-pick commands
git remote add upstream
git remote update
号
1 2 3 4 5 | git checkout -b <new-branch-name> upstream/master git cherry-pick <SHA hash of commit> git push origin <new-branch-name> |
之后,您将看到Github上的
从最新提交开始创建一个新的分支,该分支也位于原始存储库中:
1 2 | git branch new-branch origin/master git checkout new-branch |
然后使用
1 | git cherry-pick feature |
号
假设这个补丁应用时没有冲突,那么您现在就有了一个分支,您可以执行拉请求。
在第二步中,您现在需要决定如何处理您的
最后我遇到了一种情况,我叉了一个叉子,想把一个请求提交回原来的项目。
我曾经拥有:
- Orignal_项目
- forked_项目(从sha:9685770的原始项目创建)
- 我的叉子(从sha:207e29b的叉子项目创建)
- 在我的fork(sha:b67627b)中,我想要提交回原始项目的一个承诺
为此,我:
git命令类似于:
然后我选择了我的特性请求作为原始项目的请求分支。
这几乎对我有用:
1 2 3 4 5 | git checkout -b upstream upstream/master git cherry-pick <SHA hash of commit> git push origin upstream |
。
唯一的区别是:
1 | git push origin upstream:upstream |
我需要更改最后一行,这样Git Push就可以在我的Github回购中创建上游分支,这样我就可以从中创建pr。
我已经做出了承诺,我希望能够将其作为一个请求隔离到当前分支。
所以我签了一个新的分公司
1 | git checkout -b isolated-pull |
这就是我的解决方案与@kevin hakanson的不同之处,因为我需要将这个分支重置为历史上我想与之不同的位置
1 | git reset --hard [sha-to-diff-by] |
。
Cherry选择要从中创建独立请求的提交
1 | git cherry-pick [my-isolated-commit-sha] |
最后把它推到遥控器上
1 | git push origin isolated-pull |
。
并请求达西。
创建新(临时)分支、cherry pick和为该分支创建拉请求的解决方案不满足我的要求。我不想更改存储库以使一组提交可用,因此我提出了以下替代方案:
首先为所有感兴趣的提交创建修补程序文件:
1 | git format-patch -1 <sha> |
。
如果利息承诺恰好是最后一个,您可以使用
现在,您可以将补丁发送给源存储库的维护人员,他们可以应用补丁:
1 2 3 4 5 6 7 8 | git branch new-branch <master or some older commit where the fork diverged> git checkout new-branch git am < <the patch> ... git checkout master git merge new-branch |
。
最后,这看起来应该与通过拉请求合并临时分支的情况相同,但在fork存储库中没有其他分支。