我想将一些东西提交到github存储库,但我(显然)没有任何权利这样做。我做了一个repo的分支,提交我的更改并提交了一个pull-request。 现在,问题是过了一段时间其他人已经提交了原始仓库,这意味着我的分叉不再是最新的。
现在应该如何更新我的前叉?这是(https://stackoverflow.com/a/23853061/5513628)仍然是一种有效的方式,还是我每次都要删除我的仓库并创建一个新的叉子?
这就是github桌面中的fork的样子:
拉取请求是由我做出的,但之后的两个提交是由其他人做出的。它们不包含在我的回购中......
答案 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存储库。
答案 1 :(得分:2)
添加到Diki Andriansyah
回答,而不是使用
git merge upstream/master
尝试使用:
git pull upstream master
这对我有帮助:)。
答案 2 :(得分:2)
要将您在 fork 中所做的更改与原始存储库同步,您必须配置一个指向 Git 中上游存储库的远程。
不再,自 2021 年 5 月起:
<块引用>您现在可以使用 Web UI 将分支的过时分支与其上游分支同步。如果分支之间没有合并冲突,则通过快进或从上游分支合并来更新 fork 的分支。如果有冲突,会提示你打开一个pull request来解决。
转到您的分叉,点击Fetch upstream
,然后点击Fetch and merge
,直接将您的分叉与其父存储库同步。 >
您也可以点击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
了,而不必担心以后会危险地等待我。