保持最新的分叉

时间:2016-10-02 17:01:21

标签: github

我想将一些东西提交到github存储库,但我(显然)没有任何权利这样做。我做了一个repo的分支,提交我的更改并提交了一个pull-request。 现在,问题是过了一段时间其他人已经提交了原始仓库,这意味着我的分叉不再是最新的。

现在应该如何更新我的前叉?这是(https://stackoverflow.com/a/23853061/5513628)仍然是一种有效的方式,还是我每次都要删除我的仓库并创建一个新的叉子?

这就是github桌面中的fork的样子:

enter image description here

拉取请求是由我做出的,但之后的两个提交是由其他人做出的。它们不包含在我的回购中......

4 个答案:

答案 0 :(得分:8)

要同步您在原始存储库的fork中所做的更改,您必须配置一个指向Git中上游存储库的远程。

指定将与fork同步的新远程上游存储库。

git remote add upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git

您可以检查它是否成功:

git remote -v

然后获取它以更新项目:

git fetch upstream

将来自upstream / master的更改合并到本地主分支中。

git merge upstream/master

最后,您可以将原始存储库的新更新提交到fork存储库。

此信息也可以在GitHub herehere找到。

答案 1 :(得分:2)

添加到Diki Andriansyah回答,而不是使用

git merge upstream/master

尝试使用:

git pull upstream master

这对我有帮助:)。

答案 2 :(得分:2)

<块引用>

要将您在 fork 中所做的更改与原始存储库同步,您必须配置一个指向 Git 中上游存储库的远程。

不再,自 2021 年 5 月起:

<块引用>

Sync an out of date branch of a fork from the web

<块引用>

您现在可以使用 Web UI 将分支的过时分支与其上游分支同步。如果分支之间没有合并冲突,则通过快进或从上游分支合并来更新 fork 的分支。如果有冲突,会提示你打开一个pull request来解决。

Fetch upstream up to date, no conflict, and conflict flows

From GitHub

转到您的分叉,点击Fetch upstream,然后点击Fetch and merge,直接将您的分叉与其父存储库同步。 >

Compare and sync

您也可以点击Compare按钮在合并之前比较更改。

答案 3 :(得分:0)

我遇到了同样的问题,并制作了一个docker容器来更新我关心的分支分支。

尝试使用fork-sync

自述文件将引导您逐步配置将克隆的docker映像,设置用于跟踪上游的远程服务器,快速转发所需的分支以及最后将更改推送到您的fork。可以反复启动同一容器,以使分支保持最新状态。我将docker容器设置为在crontab上运行,以便我的工作站每隔两个小时更新一次我经常贡献的分叉。

我希望能够建立从上游开始跟踪我的叉子的分支。这可以通过git checkout -b mybranch upstream/master完成。但这默认情况下会将upstream设置为远程对象,这意味着如果我push的分支机构将转到upstream仓库,并可能触发CI作业。现在,我可以执行git checkout -b mybranch origin/master了,而不必担心以后会危险地等待我。