问题

我最近分叉了一个项目并应用了几个修复.然后我创建了一个拉取请求,然后被接受.

几天后,另一个贡献者做了另一个更改.所以我的叉子不包含这个更改.

如何在我的叉子中进行更改?当我进一步更改要贡献时,我是否需要删除和重新创建我的叉子?或者是否有更新按钮?

  最佳答案

在分叉存储库的本地克隆中,您可以将原始的GitHub存储库添加为“远程”. (“Remotes”就像存储库的URL的niquentals – 例如,origin是一个.)然后您可以从该上游存储库中获取所有分支,并重建您的工作以继续在上游版本上工作.根据可能看起来像的命令:

 # Add the remote, call it "upstream":

git remote add upstream https://github.com/whoever/whatever.git

# Fetch all the branches of that remote into remote-tracking branches,
# such as upstream/master:

git fetch upstream

# Make sure that you're on your master branch:

git checkout master

# Rewrite your master branch so that any commits of yours that
# aren't already in upstream/master are replayed on top of that
# other branch:

git rebase upstream/master
 

如果您不想重写主分支的历史(例如,因为其他人可能已经克隆了它),那么您应该用git merge upstream/master替换最后一个命令.但是,为了进一步提出尽可能干净的拉取请求,重新基础可能更好.


如果您将分支重新设置为upstream/master,您可能需要强制推送,以便将其推送到GitHub上自己的分叉存储库.您会这样做:

 git push -f origin master
 

您只需要在重新基础之后第一次使用 -f

  相同标签的其他问题

gitgithubforkpull-request