我在GitHub上分叉了某人的存储库,并希望使用原始存储库中的提交和更新来更新我的版本。这些是我分叉副本后制作的。
如何提取原产地所做的更改并将其合并到我的存储库中?
git push --force origin --tags
在建议的解决方案之后执行!
我在GitHub上分叉了某人的存储库,并希望使用原始存储库中的提交和更新来更新我的版本。这些是我分叉副本后制作的。
如何提取原产地所做的更改并将其合并到我的存储库中?
git push --force origin --tags
在建议的解决方案之后执行!
Answers:
您必须将原始存储库(您分叉的存储库)添加为远程存储库。
克隆完成后,您的存储库将有一个名为“
origin
” 的远程文件,指向您在GitHub上的fork。
不要让名称混淆您,这并不指向您从中派生的原始存储库。为了帮助您跟踪该存储库,我们将添加另一个名为“上游”的远程服务器:
$ cd github-services
$ git remote add upstream git://github.com/pjhyett/github-services.git
$ git fetch upstream
# then: (like "git pull" which is fetch + merge)
$ git merge upstream/master master
# or, better, replay your local work on top of the fetched branch
# like a "git pull --rebase"
$ git rebase upstream/master
您还拥有一个可以促进GitHub操作的红宝石。
另请参阅“ Git fork是git clone? ”。
git rebase upstream/master
,但是我在答案中添加了两种可能性。
git push --force
,将您在GitHub上的分支的历史记录替换为您刚刚重新定位的本地分支。由于只有您使用的是悲伤分支,因此不会涉及混乱。
除了VonC的答案,您还可以根据自己的喜好对它进行调整。
从远程分支获取后,您仍然必须合并提交。我会取代
$ git fetch upstream
与
$ git pull upstream master
因为git pull本质上是git fetch + git merge。
git rebase upstream master
请注意,如果您与保持足够的背离,这并不是没有冲突的upstream/master
。请参阅git-scm.com/docs/git-rebase(tl;dr:这会将您的本地主节点硬重置为上游的本地主节点,然后尝试从分歧的角度重新合并所有本地提交)
脚步:
Pull Requests
。New Pull Request
。默认情况下,GitHub会将原始版本与您的fork进行比较,如果您未进行任何更改,则不应有任何可比较的内容。switching the base
。现在,GitHub将把您的fork与原始的进行比较,您应该会看到所有最新的更改。Create a pull request
进行比较,并为您的请求请求分配一个可预测的名称(例如,从原始文件更新)。Create pull request
。Merge pull request
,最后Confirm
合并。如果您的叉子没有任何变化,您将能够自动合并它。switching the base
选项
采用:
git remote add upstream ORIGINAL_REPOSITORY_URL
这会将您的上游设置为您从中派生的存储库。然后执行以下操作:
git fetch upstream
这将从原始存储库中获取所有分支,包括master。
在您的本地master分支中合并以下数据:
git merge upstream/master
将更改推送到您的派生存储库,即源:
git push origin master
瞧!同步原始存储库已完成。
如果您使用的是GitHub桌面应用程序,则右上角有一个同步按钮。然后点击Update from <original repo>
在左上方附近。
如果没有要同步的更改,则它将处于不活动状态。
这是一些屏幕截图,可简化此操作。