从凌乱的GitHub fork创建pull请求

从凌乱的GitHub fork创建pull请求,git,github,Git,Github,我在GitHub上做了一个项目。我在自己的主分支中做了一些小改动。我想让它们在上游被接受,所以我想为每个请求创建干净的pull请求 我的回购协议中有。我相信对于我想要提出的每个拉动请求,我需要: 创建一个本地分支,并将其签出 git签出-b mynewfeaturename 将此分支设置为上游(非我的项目)回购的当前状态。(重新设置基础?重置?) 查看我自己的提交,然后“挑选”它们以将它们应用于此分支 git推送源mynewfeaturename 我的问题有两个: 上述过程正确吗 具体来说

我在GitHub上做了一个项目。我在自己的主分支中做了一些小改动。我想让它们在上游被接受,所以我想为每个请求创建干净的pull请求

我的回购协议中有。我相信对于我想要提出的每个拉动请求,我需要:

  • 创建一个本地分支,并将其签出
    git签出-b mynewfeaturename
  • 将此分支设置为上游(非我的项目)回购的当前状态。(重新设置基础?重置?)
  • 查看我自己的提交,然后“挑选”它们以将它们应用于此分支

  • git推送源mynewfeaturename
  • 我的问题有两个:

    • 上述过程正确吗
    • 具体来说,第2步我该怎么做
    为了帮助像我一样处于同样糟糕状态的人,我建议理想的答案是列出上述每个步骤(或任何正确的步骤)的明确命令,牵着我们的手,引导我们从头到尾完成整个过程

  • 创建一个本地分支,并将其签出。(git签出-b mynewfeaturename)
  • 将此分支设置为上游(非我的项目)回购的当前状态。(重新设置基础?重置?)
  • 以上两个步骤的结合没有意义。您可以通过以下方式到达同一地点:

    git checkout -b mynewfeaturename upstream/master
    
    也就是说,基于上游/master的当前状态创建一个新的本地分支
    mynewfeaturename
    ,然后通过选择性地应用提交来构建该分支

  • 查看我自己的提交,然后“挑选”它们以将它们应用于此分支
  • 将此分支推送到GitHub
  • 从分支创建拉取请求
  • 这在很大程度上是正确的,尽管您需要确保,如果某个特定更改依赖于以前提交的PR,那么它是基于该PR,而不是上游状态的目录

    也就是说,如果您以前提交过
    myfeature\u a
    的PR,现在您想提交
    myfeature\u B
    的PR,这取决于
    myfeature\u a
    中的更改,那么:

    git checkout -b myfeature_B myfeature_A
    
    根据本地存储库的状态,如果您首先从自己分支的交互式重基开始,通过将相关提交挤压在一起来清理历史记录,您的生活可能会更轻松

  • 创建一个本地分支,并将其签出。(git签出-b mynewfeaturename)
  • 将此分支设置为上游(非我的项目)回购的当前状态。(重新设置基础?重置?)
  • 以上两个步骤的结合没有意义。您可以通过以下方式到达同一地点:

    git checkout -b mynewfeaturename upstream/master
    
    也就是说,基于上游/master的当前状态创建一个新的本地分支
    mynewfeaturename
    ,然后通过选择性地应用提交来构建该分支

  • 查看我自己的提交,然后“挑选”它们以将它们应用于此分支
  • 将此分支推送到GitHub
  • 从分支创建拉取请求
  • 这在很大程度上是正确的,尽管您需要确保,如果某个特定更改依赖于以前提交的PR,那么它是基于该PR,而不是上游状态的目录

    也就是说,如果您以前提交过
    myfeature\u a
    的PR,现在您想提交
    myfeature\u B
    的PR,这取决于
    myfeature\u a
    中的更改,那么:

    git checkout -b myfeature_B myfeature_A
    

    根据本地存储库的状态,如果您首先从自己分支的交互式基础开始,通过挤压相关提交来清理历史记录,您的生活可能会更轻松。

    PR的依赖关系很有趣,也是一个有用的提示,谢谢!PR的依赖关系很有趣,是一个有用的提示,谢谢!