我已经分叉了一个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请求中。
有两种方法可以解决此问题:
这两种情况都涉及重写我的历史并不得不强制推动。是否有更好的方法在提交拉取请求时保持fork同步?
答案 0 :(得分:9)
是。我认为有几种方法可以做到这一点,但这就是我的工作。
所以你想在github上贡献一个存储库,让我们调用这个upstream
。
在github上,你会分叉upstream
存储库。让我们称之为origin
。
然后在您的开发计算机上克隆origin
,以便您可以处理代码。让我们称之为local
。克隆此存储库时,您很可能已将origin
设置为远程存储库。您还需要将upstream
存储库添加为远程存储库。
然后,当您想要进行更改时,请勿在{{1}}分支上进行此更改。而是为您的更改创建一个新分支。即master
如果您对所做的更改感到满意,则需要将更改从fix-issue-101
存储库推送到local
存储库。
您现在可以origin
从upstream
fix-issue-101
分支到origin
上的master
分支创建一个拉取请求。
您可以在等待接受Pull请求的同时继续在upstream
和local
创建分支,从而创建额外的Pull请求。
当origin
上的master
发生变化时,即您的请求被接受后,您将upstream
上的master
拉到upstream
master
}}。然后,您将local
上的master
推送到local
上的master
。执行此操作后,所有存储库的origin
分支将重新同步。
我希望我用一个可以理解的庄园写下这个。如果不随意提问,我会相应更新。