使用github的时候,有时我们在自己fork的仓库修改后需要PR合并到上游仓库。
我们有时会在本地修改多个地方,有多个commits到我们自己的仓库。但是我们可能只想把某个commit合并到上游仓库。这时如果直接使用Contribute功能可能会把这个commit之前的所有的commits都会合并到上游仓库。这不是我们希望的。
为了解决这个问题,就需要使用cherry-pick实现。具体原理就是:
1. 在你的本地仓库中,创建并切换到一个新的分支。可以在Github Desktop中使用某个commit来创建分支。如图:
创建完成分支后会自动切换到新创建的分支:
2. 将要PR的commit先合并到新创建的分支
先切换回主分支main(提交commit的分支),然后选择要合并到上游仓库的commit,然后右键选择cherry-pick即可完成本地合并到新创建的分支。这里可以选多个要PR的commit。
这时会弹出此commit要提交到的分支,选择刚创建的分支即可。
这时在左侧History里可以看到此分支刚提交的commit。
3. push新创建的分支
先检查仓库设置
查看我们仓库的远端是否是我们自己fork的仓库地址,这里不能是上游仓库,因为我们可能没有权限。
之后我们就可以push新创建的分支到我们fork的仓库
push完成分支之后我们既可以在github.com的fork的仓库里看到新创建的分支。
4. 向上游仓库PR
将当前分支设置为我们刚创建的分支,然后点击创建PR。
然后会自动弹出github.com的PR界面,修改描述信息即可提交合并请求。