我分叉了一个项目,做出了修改,然后创建了一个被接受的pull request。后来有新的提交被添加到了仓库中。我该如何将这些提交合并到我的分叉中?
在你的本地克隆的分叉仓库中,你可以将原始的GitHub仓库添加为“远程”。(“远程”是仓库URL的昵称 - 例如origin
。)然后你可以从那个上游仓库获取所有分支,并将你的工作重新基于上游版本继续进行。在可能看起来像这样命令的情况下:
# 添加远程,将其称为“上游”:
git remote add upstream https://github.com/whoever/whatever.git
# 将所有该远程分支拉取到远程跟踪分支中
git fetch upstream
# 确保你在主分支上:
git checkout master
# 重写你的主分支,以便任何没有在upstream/master中的提交都会在该分支之上重播:
git rebase upstream/master
如果你不想重写主分支的历史记录(例如因为其他人可能已经将其克隆),那么你应该用 git merge upstream/master
替换最后一个命令。然而,为了尽可能干净地进行进一步的拉取请求,最好使用rebase。
如果你已经基于upstream/master
重写了你的分支,你可能需要强制推送以便将其推送到自己在GitHub上的分叉仓库。你会这样做:
git push -f origin master
只有在你重写后第一次需要使用 -f
。