我从GitHub分支了一个项目。我在master
分支中进行自己的开发(通过为已开发的功能/修复程序创建分支并将其合并回master
)。
现在,我在叉子中创建了一个分支bugfix-123
,以解决原始项目中的问题123。我想创建一个新的请求,以便将我的修订合并到原始项目中。但是我注意到,拉取请求不仅包含错误修正本身,而且还包含自创建fork以来我在master
分支中的所有提交。
如何创建仅包含单个提交的请求请求?我是否需要为此创建另一个分叉?为了能够在原始项目中创建请求请求并执行自己的分叉版本开发,我应该做些什么改变?
答案 0 :(得分:1)
正如Send a pull request on GitHub for only latest commit中已经提到的,有必要为拉取请求创建一个单独的错误修正分支。 编辑:虽然我认为我的答案与链接中的已接受答案有所不同,但我可能误读了它-我是用相同的方式做的:
git fetch upstream #synchronize local repo from upstream
git checkout upstream/master #the upstream repository master has already a local branch, upstream/master, it's not necessary to create another copy
git checkout -b PR-bugfix-123 #create a branch dedicated for the pull request, and make it your current branch
git cherry-pick <commit hash> #merge changes from a specific commit; cherry-pick also allows picking a range of commits
git push origin PR-bugfix-123 #publish the branch to the fork in order to create the pull request
符号:
我决定采用以下惯例:
答案 1 :(得分:0)
首先,您应该将原始项目添加为远程项目:
git remote add upstream <URL to original project>
现在从原始文件中获取分支:
git fetch upstream
您现在将拥有一个名为upstream/master
的分支,该分支从原始存储库镜像了master
分支。您可以通过在此分支之上重新定基来移动错误修复分支:
git checkout -b PR-bugfix-123 bugfix-123
git rebase --onto upstream/master master