我的拉请求已经合并了,接下来做什么?

我最近参与了 GitHub 的一个项目,我做了以下工作:

分支原始存储库,克隆到我的本地机器上,创建一个分支来修复现有的 bug,修复存在于该分支中的 bug,将该分支推送到我的回购,向存储库的作者发送一个拉请求,将我的 修好分支合并到它的主分支。

这是我第一次使用别人的代码,所以我不知道该怎么做。现在,我的 pull 请求已经被作者合并到原始的回购/项目中。

我接下来应该做什么? 我应该删除分支吗? 我应该合并分支吗? 还有什么吗?


Additional info:

原始项目只有一个分支。

我也有一个上游设置,以获得最新的更新从原来的回购。 (我是这样做的):

git remote add upstream https://path/to/original/repo.git

我得到的最新消息是这样的:

git fetch upstream
21655 次浏览

首先,祝贺您对 Github 项目的首次贡献。

通常的 Github 工作流是为您解决的每个问题创建一个新的分支。这样,主线存储库的维护者就可以决定合并哪个解决方案,拒绝哪个解决方案。在上游合并了一个分支之后,就不再需要这个分支了,通常可以删除它。

接下来要做的是: 继续贡献新的特性,或者在他们自己的专用分支中修复其他错误(只推到你的分支上)。

也就是说,你的叉子还在,但是叉子里的树枝可以来来去去。

如果您不打算进一步贡献,也可以删除 fork,但它是 将删除“您贡献的仓库”中的相应条目

It is easier to:

  • 在分支上删除 fix分支(实际上是 它现在为你删除了)(在本地克隆的回购中,请参见“ 在本地和远程删除 Git 分支”)
  • git pull upstream master(如果 master是集成了您的修复程序的分支: 合并将是一个快进的分支) : 此时不需要 rebase。
  • 在更新的本地 master之上重新创建一个修复分支(现在使用的是来自 upstream master的最新版本)。

然而,在提交任何 未来请求之前,千万不要忘记一个步骤:

rebase first your current branch (fix) from upstream destination branch

(见“ 在 github 中起源和上游的区别是什么”)

在提交任何东西回到原始回购(“上游”) ,你需要确保你的工作是基于上述原始回购的 latest(或拉请求不会导致快进合并一旦应用回到 upstream回购)。
比如说“ 管理 github 中共享回购请求的工作流”。

换句话说,upstream可以在您忙于修复内容的时候进化(推送新的提交)。您需要重播从上游的最新工作之上的修复,以确保您的提交仍然与最新的 upstream兼容。


OP Santosh Kumar在评论中:

我已经从 upstream拉并合并到主,现在该怎么办?

如果自从最近的请求之后还没有进行任何新的修复,请参见上文(在更新的 master之上删除并重新创建一个新的分支 fix)。

如果你已经做了更多的工作,因为你的拉请求,我不会从 upstream合并,如果我想做一个 new拉请求: 我会拉 重新定位:

git pull --rebase upstream master

这样,所有新的本地工作都会在最近的 upstream master提交(在我的本地回购中获取)之上重播,假设 master是将集成我未来的 pull 请求的目标分支。

Then I can push my local work to 'origin', which is my fork on GitHub of upstream.
And from my fork on GitHub, I can safely make a pull request, knowing that it will only add new commits to upstream without needing any merge resolution: merging those new commits in upstream repo will mean a simple fast-forward merge.


如果 git pull --rebase没有指定要在其上重新设置 fix分支(当前已签出)的分支,那么 git pull --rebase将无法工作:

That (git pull --rebase) says:

You asked to pull from the remote '`upstream`', but did not specify a branch.

我应该附加主人最后? 这将做什么? ,它会删除我的 fix分支?

Yes, you can specify the branch which will be the target of the pull request, for instance 'master'.
这将不会删除您的 fix分支,但会重播它在上游 master上取回在您的回购。