从fork创建新的pull请求,而不需要前一个fork的提交

时间:2017-03-19 10:20:04

标签: git github request pull

所以我已经对其他人的回购做了一些提交,然后提交了拉动请求。我的旧拉请求还没有合并,现在我需要提交一个没有先前提交的新拉取请求,但是我要对我的叉子进行新的更改(我需要我的旧拉请求与其承诺留下来)。我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

要真正理解这一点,我们需要定义一些东西。

首先,这里有一点问题因为"拉请求"不是Git本身。您已添加标记,GitHub 定义"拉取请求" - 事实上,他们重新 - 定义了它至少一次;看this early 2013 answer from VonC, revised numerous times afterward - 但不是每个人都使用完全相同的定义(不仅仅是其中有趣的福克斯商业形象,在确切的细节上存在真正的分歧,正如刚才所指出的,即使GitHub本身也不同意)。但它们都有一些共同特征。一般的想法是至少涉及两个人:你自己和别人。 您的目标是让其他人将您的工作合并到他们的工作中。为此,您希望将其设为尽可能容易。

接下来,还有另一个问题,因为" fork" 不是Git本身。 SO问题Are git forks actually git clones?正确地说明了这一点:

  

我一直听到有人说他们在git中分配代码。 Git" fork"听起来像git"克隆"加上一些(毫无意义的)放弃未来合并的心理意愿。在git中没有fork命令,对吧?

     

Github通过将对应关系固定到它上来使分叉变得更加真实。也就是说,您按下前叉按钮后,当您按下拉取请求按钮时,系统足够智能,可以通过电子邮件发送给所有者。因此,它围绕回购所有权和权限进行了一些舞蹈。

(VonC再一次有一个很好的答案:是的," fork" 克隆,但在GitHub服务器端完成,具有这些额外的属性,权限和等等)。使用此服务器端克隆可以让使用GitHub的人更容易收回您的工作。 最后,它可能大概是git merge,因为GitHub会使用git merge(有时会使用--squash)。它可能只是有一些Web GUI点击按钮,使它更容易。

回到你的问题

  

所以我已经对其他人的回购做了一些提交,然后提交了拉动请求。我的旧拉请求还没有合并,现在我需要提交一个没有先前提交的新拉取请求,但是我要对我的叉子进行新的更改(我需要我的旧拉请求与其承诺留下来)。我怎么能这样做?

其中一些取决于"其他人"。但是:

  • 如果您将每个拉取请求("请将此工作")合并到您自己的分支中;和
  • 如果您准备好将分支提示与他们的分支提示合并,那么他们可以轻松地git merge它,也许只需点击一下按钮

然后你确实为他们尽可能简单。

是否以及多少"您的分叉" - 我们的意思"您在GitHub上维护的克隆" -matters取决于他们将如何获取您的提交和合并(或决定是否合并)。但是,将每组提交放在它自己的分支上,同时保持一些分支 - 通常但不总是命名为master - 在你的分支中更新一些,可能同名的分支在他们的 fork,即在GitHub上维护的克隆应该具有所需的效果。

完成所有这些意味着您的提交成为他们可以轻松添加到他们的存储库的东西。此外,当他们使用clicky按钮时 - 如果他们的计划和方法 - 你的提交将以某种方式被复制到他们的存储库中(直接复制加合并提交,如果定期合并;压缩成一个新的集合如果壁球"合并")则提交。完成后, 你的工作。

(免责声明:我不会使用GitHub上的clicky按钮。:-)我只是直接将您的提交加载到我的存储库中,在我的机器上,我可以使用命令行界面完全控制。)< / p>