我在GitHub上分叉了一个项目。我已经在我自己的主分支中做了一小堆改变。我想让他们在上游接受,所以我想为每个人创建干净的拉取请求。
我的回购中有created an "upstream" remote。我相信,对于我想要的每个拉取请求,我需要:
git checkout -b mynewfeaturename
git push origin mynewfeaturename
我的问题有两个:
为了帮助处于同样糟糕状态的其他人,我建议理想的答案列出上述每个步骤的明确命令(或任何正确的步骤),握住我们的手,走我们的路从头到尾贯穿整个过程。
答案 0 :(得分:2)
- 创建一个本地分支,并将其签出。 (git checkout -b mynewfeaturename)
- 将此分支设置为上游(非my-project)仓库的当前状态。 (重新?重置?)
醇>
上述两个步骤的组合没有意义。你可以通过以下方式到达同一个地方:
git checkout -b mynewfeaturename upstream/master
即,根据当前状态mynewfeaturename
创建一个新的本地分支upstream/master
,然后通过有选择地应用提交来构建该分支。
- 查看我自己的提交和" cherry pick"他们将它们应用于这个分支。
- 将此分支推送到GitHub。
- 从分支机构创建拉取请求。
醇>
这在很大程度上是正确的,尽管您要确保如果特定更改取决于先前提交的PR,它是基于该PR而不是上游状态的目录。
也就是说,如果您之前已为myfeature_A
提交了公关,并且您现在想要提交myfeature_B
的公关,这取决于myfeature_A
的更改,那么:
git checkout -b myfeature_B myfeature_A
根据您本地存储库的状态,如果您首先使用自己的分支的交互式rebase开始,通过将相关提交压缩来清理历史记录,您的生活也会更容易。