让我们假设在GitHub上有一个存储库someone/foobar,我把它分叉到me/foobar。
someone/foobar
me/foobar
我如何从父库直接放到我的叉子上 拉出新的提交,而不必添加一个单独的遥控器 记得从那里定期拉 ?
目标是:
git pull
git push
git remote set-url origin git@github.com:someone/foobar git remote set-url origin --push git@github.com:me/foobar
git pull git@github.com:me/foobar
打开分叉Git存储库我/ foobar。
点击比较:
你会收到通知:
< p > 没有什么可以比较的。 < br > >是我:主中所有提交的最新数据。尝试切换基数进行比较。
点击本页上的切换基数:
然后你会看到在你fork它之后对人/ foobar的所有提交。
点击创建拉请求:
给拉请求一个标题,也许是一个描述,然后单击创建拉请求。
在下一页中,滚动到页面底部并单击合并拉取请求和确认合并。
你的Git仓库我/ foobar将被更新。
编辑:rebase选项显示在这里:
我使用了一个相当简单的方法使用GitHub Web UI来做到这一点:
另一种选择是使用GitHub for Mac中的Update from upstreamRepoName/master按钮(我假设GitHub for Windows)。
Update from upstreamRepoName/master
我不知道如何在不添加另一个遥控器的情况下完成,但是我总是添加我从upstream遥控器分叉的回购,所以我可以简单地做:
upstream
git branch -a|grep remotes/upstream| while IFS="/" read p r b; do echo Syncing $r/$b to origin/$b; git push origin $r/$b:refs/heads/$b; done
这将同步所有分支,包括创建新分支(删除refs/heads/只更新现有分支)。如果你的任何分支已经发散,它将为该分支抛出一个错误。
refs/heads/
“拉动式”应用程序是一个自动设置和忘记解决方案。它会将fork的默认分支与上游存储库同步。
访问URL,点击绿色的“安装”按钮,选择你想要启用自动同步的存储库。
分支直接在GitHub上每小时更新一次,在你的本地机器上,你需要拉主分支以确保你的本地副本是同步的。
也在https://stackoverflow.com/a/58965171/946850中回答。
我会简单地使用:
git pull git@github.com:someone/foobar <branch_name> && git push
me
someone
foobar
如果你看到绿色文本Able to merge,然后按创建拉请求
Able to merge
在下一页,滚动到页面底部,单击合并拉取请求和确认合并。
最近(2021年5月初),GitHub网站为此提供了一个一键式按钮:
< img src = " https://i.stack.imgur.com/4tngM.png " alt = " / >
我无法抗拒点击它的诱惑。
关于这个新特性,请参阅GitHub的官方推文。