让我们假设在GitHub上有一个存储库someone/foobar,我把它分叉到me/foobar。
我如何从父库直接将新提交拉到我的fork,而不需要添加一个单独的远程并记得定期从那里拉?
目标是:
Git从父存储库中获取 Git推送把所有东西都送到我的叉子上
让我们假设在GitHub上有一个存储库someone/foobar,我把它分叉到me/foobar。
我如何从父库直接将新提交拉到我的fork,而不需要添加一个单独的远程并记得定期从那里拉?
目标是:
Git从父存储库中获取 Git推送把所有东西都送到我的叉子上
当前回答
最近(2021年5月初),GitHub网站为此提供了一个一键式按钮:
我无法抗拒点击它的诱惑。
关于这项新功能,请参阅GitHub的官方推文。
其他回答
访问https://github.com/me/foobar/compare/master...someone:master(当然,用相应的repo和用户名替换me, someone和foobar) 如果你看到绿色文本能够合并,然后按创建拉请求 在下一页上,滚动到页面底部并单击“合并拉取请求”和“确认合并”。
最近(2021年5月初),GitHub网站为此提供了一个一键式按钮:
我无法抗拒点击它的诱惑。
关于这项新功能,请参阅GitHub的官方推文。
我不知道如何在不添加另一个远程的情况下完成,但是我总是添加我从上游远程分叉的回购,所以我可以简单地做:
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/只更新现有分支)。如果你的任何分支已经发散,它将为该分支抛出一个错误。
打开分叉Git存储库me/foobar。
点击比较:
你会收到通知:
没有什么可以比较的。 某人:master是最新的所有提交从我:master。试着换一下基数进行比较。
点击切换本页的底座:
然后你可以看到所有提交给某人/foobar后,你分叉它的一天。
点击Create pull request:
给拉请求一个标题,或者一个描述,然后点击创建拉请求。
在下一页上,滚动到页面底部并单击“合并拉取请求”和“确认合并”。
你的Git存储库me/foobar将被更新。
编辑:rebase选项显示在这里:
git remote set-url origin git@github.com:someone/foobar
git remote set-url origin --push git@github.com:me/foobar
但有一个警告: 如果你是唯一一个对你的fork进行更改的人,这是完美的。 然而,如果它是与其他人共享的,你可能不得不从你的分叉,在这种情况下,一个单独的遥控器是唯一的解决方案。
编辑: 实际上,您可以git调用git@github.com:me/foobar,这样就消除了警告。 哪一个更容易记住,由你来选择。