问题描述
在分叉存储库的本地克隆中,您可以将原始 GitHub 存储库添加为“远程”。(“远程”就像存储库 URL 的昵称 -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
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
如果您不想重写 master 分支的历史记录(例如因为其他人可能已经克隆了它),那么您应该将最后一个命令替换为git merge upstream/master
. 但是,为了进一步发出尽可能干净的拉取请求,最好重新设置基础。
如果你已经将你的分支重新建立在upstream/master
你的基础上,你可能需要强制推送以便将它推送到你自己在 GitHub 上的分叉存储库。你会这样做:
git push -f origin master
您只需-f
在重新定位后第一次使用。
解决方法
我分叉了一个项目,应用了几个修复程序并创建了一个被接受的拉取请求。几天后,另一位贡献者进行了另一项更改。所以我的叉子不包含那个变化。
我怎样才能把那个零钱放到我的叉子里?当我有进一步的更改要贡献时,是否需要删除并重新创建我的分叉?或者有更新按钮吗?