在GitHub上发送一个拉取请求,仅用于最新的提交

我在github上分了一个项目,并且成功地对我的本地主人进行了修改,并在github上推动起源。 我想发送一个拉请求,但只想包括最后一次提交。 github.com上的pull request UI显示了最后9次提交,我不知道如何过滤掉。

我试图了解是否应该创build一个新的本地分支,检查出来,并以某种方式重置或重置上游? 然后应用我的最后一次提交从我的主人身份证到新的本地分支,并使用该拉请求?

我试图理解正确的概念,并找出正确的命令行来做我所需要的。

你需要基本上创build一个新的分支和樱桃select提交你想添加到它。

注意:在checkout / cherry-pick命令之前,你可能需要这些

git remote add upstream <git repository>

git remote update

 git checkout -b <new-branch-name> upstream/master git cherry-pick <SHA hash of commit> git push origin <new-branch-name> 

之后,您将在github上看到<new-branch-name>分支,切换到它并可以提交您想要的更改的请求。

从最新的提交中创build一个新的分支,这个分支也在源代码仓库中:

 git branch new-branch origin/master git checkout new-branch 

然后使用git cherry-pick来获得你想要的pull request的单个提交。 如果具有此提交的分支称为feature并且您想要的提交是此分支中的最新提交,则将会是

 git cherry-pick feature 

假设这个补丁适用于没有冲突,你现在有一个分支,你可以做你的拉请求。

第二步,您现在需要决定如何处理您的feature分支。 如果你还没有在这个分支上发布你的修改,那么最好的过程可能是在新分支上重新分支这个分支(如果不是由git rebase自动完成的,那么删除最后一个分支)。

我最终陷入了一个分叉状态,并想要将原始项目提交回请求。

我有:

  • orignal_project
  • forked_project(从SHA:9685770的原始项目创build)
  • my_fork(从SHA:207e29b的分叉项目创build)
  • 在我的叉(SHA:b67627b),我想提交回原来的项目提交

为此,我:

  1. 从原来的项目分叉的SHA创build一个新的分支
  2. 从原来的项目拉了所有
  3. 樱桃select了我想提交的提交请求
  4. 把它推到github

git命令是这样的:

  1. git分支我的function请求9685770
  2. git checkout my-feature-request
  3. git pull https://github.com/original_project/original_project.git
  4. git cherry-pick b67627b
  5. git push origin my-feature-request

然后,我select我的function请求作为我的拉请求到原始项目的分支。

这几乎为我工作:

 git checkout -b upstream upstream/master git cherry-pick <SHA hash of commit> git push origin upstream 

唯一的区别是这样的:

 git push origin upstream:upstream 

我需要改变最后一行,以便git push会使我的GitHub repo中的上游分支,以便我可以从它做PR。

我已经做了我希望能够隔离的提交回到当前分支的提交。

所以我检查了一个新的分支

 git checkout -b isolated-pull 

这里是我的解决scheme与@Kevin Hakanson不同的地方 ,因为我需要将这个分支重置到我想要从中区分的历史地点

 git reset --hard [sha-to-diff-by] 

并挑选我想创build一个孤立的拉请求的承诺

 git cherry-pick [my-isolated-commit-sha] 

最后把它推到遥控器上

 git push origin isolated-pull 

并拉请求dat shi。

创build新(临时)分支的解决scheme,樱桃挑选和创build该分支的拉请求不满足我。 我不想更改我的存储库以提供一组提交,所以我提出了以下方法:

首先为所有感兴趣的提交创build补丁文件:

 git format-patch -1 <sha> 

如果感兴趣的提交恰好是最后一个,那么可以使用HEAD代替<sha>

现在,您可以将修补程序发送给源代码库的维护人员,他们可以应用它们:

 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-repository中没有额外的分支。