当前位置:  开发笔记 > 开发工具 > 正文

将原始GitHub存储库中的新更新提取到分叉的GitHub存储库中

如何解决《将原始GitHub存储库中的新更新提取到分叉的GitHub存储库中》经验,为你挑选了4个好方法。

我在GitHub上分叉某人的存储库,并希望使用原始存储库中的提交和更新来更新我的版本.这些都是在我分发我的副本后制作的.

如何引入在原点中所做的更改并将它们合并到我的存储库中?



1> VonC..:

您必须将原始存储库(您分叉的存储库)添加为远程存储库.

从GitHub fork手册页:

叉子

一旦克隆完成,你的repo将有一个名为" origin" 的遥控器指向你在GitHub上的分叉.
不要让这个名字混淆你,这并不是指你分叉的原始回购.为了帮助您跟踪该回购,我们将添加另一个名为"upstream"的远程:

$ 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? ".


另见http://bassistance.de/2010/06/25/git-fu-updating-your-github-fork/以获得一个很好的总结.
@syedrakib我更喜欢`git rebase upstream/master`,但我在答案中添加了两种可能性.
@PaBLoX你不会造成混乱:你`git push --force`,用你刚才重新定位的本地分支替换GitHub分支的历史记录.因为只有你使用悲伤的分支,所以不涉及任何混乱.
我明白.我仍然认为这很难,很重要而且不直观.仍然奇怪的是,我的变化总是在最后(最后),而实际上它们是在之前制作的.我之前发布的解决方案看起来更好(仍然非常重要).问题是提交散列更改(显然,因为有一个新的父级)并在调用问题时在github中生成大量噪声.令我感到惊讶的是,没有办法保持上游更新并管理自己的分支,而不会创建无意义的合并提交或"谎言"历史记录.

2> n00shie..:

除了VonC的答案,你可以根据自己的喜好进一步调整它.

从远程分支获取后,您仍然需要合并提交.我会替换

$ git fetch upstream

$ git pull upstream master

因为git pull本质上是git fetch + git merge.


当然,在这种情况下,它只会做一个快进

3> Dmitry Pavlo..:

该视频演示了如何直接从GitHub更新分支

脚步:

    在GitHub上打开你的分叉.

    点击Pull Requests.

    点击New Pull Request.默认情况下,GitHub会将原始文件与您的fork进行比较,如果您没有进行任何更改,则不应该进行任何比较.

    点击switching the base.现在GitHub会将你的分叉与原版进行比较,你应该看到所有最新的变化.

    单击Create a pull request此比较并为拉取请求指定可预测的名称(例如,从原始更新).

    点击Create pull request.

    向下滚动并单击Merge pull request,最后Confirm合并.如果您的fork没有任何更改,您将能够自动合并它.


不幸的是,这个漂亮的图形方法会在您的分支中产生额外的噪音,如上面在接受的答案的评论中所述.因此,建议使用命令行方法:https://help.github.com/articles/syncing-a-fork/

4> Raj..:

使用:

git remote add upstream ORIGINAL_REPOSITORY_URL

这会将您的上游设置为您分叉的存储库.然后这样做:

git fetch upstream      

这将从原始存储库中获取包括master在内的所有分支.

在本地主分支中合并此数据:

git merge upstream/master

将更改推送到分叉存储库,即到源:

git push origin master

瞧!您已完成同步原始存储库.

推荐阅读
个性2402852463
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有