Github:拉出请求后清理叉子

时间:2016-07-28 16:06:57

标签: git github fork pull-request

我已经分叉了一个github存储库,提交了一个提交(标题Some small changes),提交了一个pull请求并将它合并到主存储库中(提交标题Some small changes (#12),其中#12是拉请求号)。到目前为止,非常好。

现在,当我想更新我的fork(git rebase upstream/master,请参阅here)时,我在我的存储库中有两次这样的提交。首先为Some small changes,然后再为Some small changes (#12)。如果我创建了一个新的pull请求,Some small changes提交将再次添加到pull请求中。

有两种方法可以解决此问题:

  1. 清理我的前叉,请参阅this answer
  2. 将所有提交合并为一个,请参阅this answer
  3. 这两种情况都涉及重写我的历史并不得不强制推动。是否有更好的方法在提交拉取请求时保持fork同步?

1 个答案:

答案 0 :(得分:9)

是。我认为有几种方法可以做到这一点,但这就是我的工作。

所以你想在github上贡献一个存储库,让我们调用这个upstream

在github上,你会分叉upstream存储库。让我们称之为origin

然后在您的开发计算机上克隆origin,以便您可以处理代码。让我们称之为local。克隆此存储库时,您很可能已将origin设置为远程存储库。您还需要将upstream存储库添加为远程存储库。

然后,当您想要进行更改时,请勿在{{1​​}}分支上进行此更改。而是为您的更改创建一个新分支。即master

如果您对所做的更改感到满意,则需要将更改从fix-issue-101存储库推送到local存储库。 您现在可以originupstream fix-issue-101分支到origin上的master分支创建一个拉取请求。

您可以在等待接受Pull请求的同时继续在upstreamlocal创建分支,从而创建额外的Pull请求。

origin上的master发生变化时,即您的请求被接受后,您将upstream上的master拉到upstream master }}。然后,您将local上的master推送到local上的master。执行此操作后,所有存储库的origin分支将重新同步。

我希望我用一个可以理解的庄园写下这个。如果不随意提问,我会相应更新。