如果我想在另一个补丁被接受后处理不同的错误怎么办?

3
我刚开始使用Github,并在本地PC上练习了它。然后我发现了一个Github项目并开始修复其中的错误。
以下是操作步骤:
  1. 我fork了该项目并将其下载到我的PC。
  2. 我打开了一个分支,开始在该分支上进行修复工作。
  3. 我将补丁分支推回Github。
  4. 在Github上切换到该分支并向开发者发送pull request。
  5. 该补丁被接受了。
但现在我想解决第二个错误。我该如何更新Github上的fork和本地副本到最新的官方版本(包括我的补丁和其他几个新的补丁)?
我需要关闭本地和Github上的补丁分支吗?我需要逐个关闭它们吗?
还是我应该删除我的fork并重新fork一个新的呢?
1个回答

2
假设你的分支位于git://github.com/lulalala/foo.git,上游仓库位于git://github.com/someuser/foo.git

首先需要将他们的仓库添加为远程仓库。

git remote add upstream git://github.com/someuser/foo.git

现在您已经添加了他们的仓库,可以获取他们的分支。
git fetch upstream
git branch -a # Look, you've got their branches!*

检出他们的主分支,然后将其变基到你的分支上。
git checkout upstream/master
git rebase master

现在将代码推送回您在GitHub上的分支。
git push origin master

看这里!
* You don't actually have their branches, you need to check them out to have a physical copy.

谢谢!当我检出upstream/master时,我得到了消息“您处于'分离的HEAD'状态”,然后我就在“(无分支)”中。这是预期的吗? - lulalala
重置之后,我处于“(无分支)”状态。推送它将生成消息“一切都是最新的”。而我的Github分支仍然没有改变。 - lulalala
在 rebase 完成后,你需要切换回主分支,即 git checkout master - basicxman
是的,我尝试过那个方法,但它也没有起作用。不过这个方法可以解决问题 http://bradlyfeeley.com/2008/09/03/update-a-github-fork-from-the-original-repo/ - lulalala
我想我找到了问题所在。我应该使用git rebase master,但我却使用了git checkout master git rebase upstream/master来将当前的master应用于upstream/master之上。你觉得呢?如果你认为这是正确的,并编辑了答案,我会接受它:D - lulalala

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接