我在github上分叉了一个项目,并成功地对我的本地master进行了更改,并在github上推到了原点。我想发送一个拉请求,但只想包括最后一次提交。在github.com上的拉请求UI显示了最后9次提交,我不知道如何过滤下来。
我试图理解我是否应该创建一个新的本地分支,检查出来,以某种方式重置或重基到上游?然后应用我的最后一次提交从我的主人通过id到新的本地分支,并使用它的拉请求?
我正在努力掌握正确的概念,并找出正确的命令行来完成我需要的工作。
我在github上分叉了一个项目,并成功地对我的本地master进行了更改,并在github上推到了原点。我想发送一个拉请求,但只想包括最后一次提交。在github.com上的拉请求UI显示了最后9次提交,我不知道如何过滤下来。
我试图理解我是否应该创建一个新的本地分支,检查出来,以某种方式重置或重基到上游?然后应用我的最后一次提交从我的主人通过id到新的本地分支,并使用它的拉请求?
我正在努力掌握正确的概念,并找出正确的命令行来完成我需要的工作。
当前回答
我最终遇到了这样的情况:我已经分叉了,想要向原始项目提交一个拉请求。
我有:
orignal_project forked_project(从SHA的原始项目创建:9685770) my_fork(从SHA的fork项目创建:207e29b) 在我的fork (SHA: b67627b)中提交一个我想提交回原始项目的提交
为此,我:
从原来项目分叉的SHA创建了一个新的分支 都是从原项目中提取的 cherry选择了我想作为拉请求提交的提交 都放到github上了
git命令是这样的:
Git分支my-feature-request 9685770 Git checkout my-feature-request Git拉https://github.com/original_project/original_project.git Git选择b67627b Git推送源my-feature-request
然后我选择my-feature-request作为对原始项目的pull请求的分支。
其他回答
从最近的提交开始创建一个新分支,它也在原始存储库中:
git branch new-branch origin/master
git checkout new-branch
然后使用git来获得你想要的pull请求的单个提交。如果带有此提交的分支称为feature,并且您想要的提交是该分支中的最新提交,则将为
git cherry-pick feature
假设这个补丁没有冲突地应用,那么您现在就有了一个可以执行pull请求的分支。
在第二步中,您现在需要决定如何处理您的特性分支。如果你还没有在这个分支上发布你的更改,最好的方法可能是在new-branch上重新基于这个分支(并且删除最后一次提交,如果git rebase没有自动完成的话)。
你需要创建一个新的分支,并选择你想要添加到它的提交。
注意:在执行checkout/cherry-pick命令之前可能需要这些命令 Git远程添加上游< Git仓库> Git远程更新
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> branch,切换到它,可以提交拉请求和你想要的更改。
我已经完成了提交,我希望能够将其作为一个拉请求隔离回当前分支。
所以我去了一家新分店
git checkout -b isolated-pull
这就是我的解决方案与@Kevin Hakanson的不同之处,因为我需要将这个分支重置到我想要不同的历史中的地方
git reset --hard [sha-to-diff-by]
然后选择我想从中创建一个独立的拉请求的提交
git cherry-pick [my-isolated-commit-sha]
最后把它推上遥控器
git push origin isolated-pull
并拉请求dat shi。
我最终遇到了这样的情况:我已经分叉了,想要向原始项目提交一个拉请求。
我有:
orignal_project forked_project(从SHA的原始项目创建:9685770) my_fork(从SHA的fork项目创建:207e29b) 在我的fork (SHA: b67627b)中提交一个我想提交回原始项目的提交
为此,我:
从原来项目分叉的SHA创建了一个新的分支 都是从原项目中提取的 cherry选择了我想作为拉请求提交的提交 都放到github上了
git命令是这样的:
Git分支my-feature-request 9685770 Git checkout my-feature-request Git拉https://github.com/original_project/original_project.git Git选择b67627b Git推送源my-feature-request
然后我选择my-feature-request作为对原始项目的pull请求的分支。
创建一个新的(临时)分支的解决方案,并为该分支创建拉请求并不能让我满意。我不想改变我的存储库以使一组提交可用,所以我提出了以下替代方案:
首先为所有感兴趣的提交创建补丁文件:
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
最后,这看起来就像一个临时分支被一个pull请求合并了一样,但是在fork-repository中没有额外的分支。