我如何更新GitHub分叉库? [英] How do I update a GitHub forked repository?

查看:93
本文介绍了我如何更新GitHub分叉库?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我最近分手了一个项目并应用了几个修补程序。然后我创建了一个拉取请求,然后接受。



几天后,另一个贡献者做了另一个更改。所以我的分支没有包含这种变化......我怎样才能把这个变化分解到我的分叉中?



当我需要删除并重新创建我的分叉时有进一步的变化贡献?或者是否有更新按钮?

解决方案

在分叉存储库的本地克隆中,可以将原始GitHub存储库添加为远程。 (例如,Remotes就像存储库的URL的昵称 - 例如, origin 是一个)。然后,您可以从该上游存储库中获取所有分支,并重新分配您的工作继续在上游版本上工作。对于可能如下所示的命令:

 #添加远程设备,将其称为上游 :

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

#将远程分支的所有分支提取到远程跟踪分支中,
#例如上游/主人:

git fetch上游

#确保您位于您的主分支:

git checkout master

#重写你的master分支,以便你
#的所有提交都不在上游/ master中,并在
#other分支之上重播:

git rebase upstream / master

如果您不想重写历史记录(例如,因为其他人可能已经克隆了它),那么你应该用 git merge upstream / master 来替换上一个命令。但是,为了进一步提出尽可能干净的pull请求,最好重新绑定。






如果你已经将您的分支重新分配到 upstream / master ,您可能需要强制推送它以将其推送到您自己的GitHub上的分叉存储库。你可以这样做:

  git push -f原点大师

您只需在重新出售后第一次使用 -f 即可。


I recently forked a project and applied several fixes. I then created a pull request which was then accepted.

A few days later another change was made by another contributor. So my fork doesn't contain that change... How can I get that change into my fork?

Do I need to delete and re-create my fork when I have further changes to contribute? Or is there an update button?

解决方案

In your local clone of your forked repository, you can add the original GitHub repository as a "remote". ("Remotes" are like nicknames for the URLs of repositories - origin is one, for example.) Then you can fetch all the branches from that upstream repository, and rebase your work to continue working on the upstream version. In terms of commands that might look like:

# 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

If you don't want to rewrite the history of your master branch, (for example because other people may have cloned it) then you should replace the last command with git merge upstream/master. However, for making further pull requests that are as clean as possible, it's probably better to rebase.


If you've rebased your branch onto upstream/master you may need to force the push in order to push it to your own forked repository on GitHub. You'd do that with:

git push -f origin master

You only need to use the -f the first time after you've rebased.

这篇关于我如何更新GitHub分叉库?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆