Github:拉取请求后清理分叉
Github: Clean up fork after pull request
我已经分叉了一个 github 存储库,进行了提交(标题 Some small changes
),提交了拉取请求并将其合并到主存储库中(提交标题 Some small changes (#12)
,其中#12
是拉取请求编号)。到目前为止,还不错。
现在,当我想更新我的复刻时(git rebase upstream/master
,请参阅 here),我在我的存储库中有两次提交。首先是 Some small changes
,然后是 Some small changes (#12)
。如果我创建一个新的拉取请求,Some small changes
提交将再次添加到拉取请求中。
有两种方法可以解决此问题:
- 清理我的叉子,看this answer
- 将所有提交合并为一个,参见this answer
这两种情况都涉及重写我的历史并且不得不 force-push。在提交拉取请求时,是否有更好的方法让您的分叉保持同步?
是的。我假设有几种方法可以做到这一点,但这是我所做的。
所以你想为 github 上的存储库做贡献,我们称之为 upstream
。
在 github 上,您将分叉 upstream
存储库。让我们称之为 origin
.
然后在您的开发机器上克隆 origin
以便您可以处理代码。让我们称之为 local
。当您克隆此存储库时,您很可能已经将 origin
设置为远程存储库。您还需要将 upstream
存储库添加为远程存储库。
然后当你想进行更改时,不要在 master
分支上进行此更改。而是为您的更改创建一个新分支。即 fix-issue-101
一旦您对所做的更改感到满意,您将希望将更改从 local
存储库推送到 origin
存储库。
您现在可以在 upstream
上创建从 origin
上的 fix-issue-101
分支到 upstream
上的 master
分支的拉取请求。
您可以在等待合并请求被接受的同时继续在 local
和 origin
上创建分支,从而创建额外的合并请求。
当 upstream
上的 master
发生变化时,即您的 Pull Request 被接受,您将从 upstream
上的 master
拉到 master
local
。然后,您将 local
上的 master
推到 origin
上的 master
。这样做之后,所有存储库的 master
分支将恢复同步。
我希望我以一种可以理解的方式写了这篇文章。如果有问题,请随时提问,我会相应更新。
我已经分叉了一个 github 存储库,进行了提交(标题 Some small changes
),提交了拉取请求并将其合并到主存储库中(提交标题 Some small changes (#12)
,其中#12
是拉取请求编号)。到目前为止,还不错。
现在,当我想更新我的复刻时(git rebase upstream/master
,请参阅 here),我在我的存储库中有两次提交。首先是 Some small changes
,然后是 Some small changes (#12)
。如果我创建一个新的拉取请求,Some small changes
提交将再次添加到拉取请求中。
有两种方法可以解决此问题:
- 清理我的叉子,看this answer
- 将所有提交合并为一个,参见this answer
这两种情况都涉及重写我的历史并且不得不 force-push。在提交拉取请求时,是否有更好的方法让您的分叉保持同步?
是的。我假设有几种方法可以做到这一点,但这是我所做的。
所以你想为 github 上的存储库做贡献,我们称之为 upstream
。
在 github 上,您将分叉 upstream
存储库。让我们称之为 origin
.
然后在您的开发机器上克隆 origin
以便您可以处理代码。让我们称之为 local
。当您克隆此存储库时,您很可能已经将 origin
设置为远程存储库。您还需要将 upstream
存储库添加为远程存储库。
然后当你想进行更改时,不要在 master
分支上进行此更改。而是为您的更改创建一个新分支。即 fix-issue-101
一旦您对所做的更改感到满意,您将希望将更改从 local
存储库推送到 origin
存储库。
您现在可以在 upstream
上创建从 origin
上的 fix-issue-101
分支到 upstream
上的 master
分支的拉取请求。
您可以在等待合并请求被接受的同时继续在 local
和 origin
上创建分支,从而创建额外的合并请求。
当 upstream
上的 master
发生变化时,即您的 Pull Request 被接受,您将从 upstream
上的 master
拉到 master
local
。然后,您将 local
上的 master
推到 origin
上的 master
。这样做之后,所有存储库的 master
分支将恢复同步。
我希望我以一种可以理解的方式写了这篇文章。如果有问题,请随时提问,我会相应更新。