假设我有一个upstream
存储库,我已经将它分叉到一个新的origin
.
如果我想将上游 repo 中的更改合并到我的分叉源中,我会在 fork 中执行以下操作:
$ git merge upstream/master
我将如何走向另一个方向,从原点到上游?假设我在 fork 中更改了一些我想推送给父级的东西——我该怎么做?
只是为父级设置一个新的远程/上游,使用叉作为父级的问题upstream
吗?
分叉只是原始存储库的另一个克隆。
如果您想在它们之间共享提交/分支,请将它们都添加为remote
本地存储库的 s,然后您可以决定如何合并和推送您的提交到哪个存储库。
当你这样做时git merge upstream/master
,你将你当前的master
分支加入你的upstream
遥控器的分支。如果您push
对上游 ( ) 进行了这些更改git push upstream master
,您将更新您的upstream
遥控器。如果您push
将它们转移到您的origin
远程 ( git push origin master
),您将更新您的原始存储库。
分叉和克隆之间的唯一区别在于访问。
如果你克隆一些开源项目,你通常会做一个fork,因为你不能推回那个项目的中央存储库,因为你没有这样做的权利。如果每个人都有权将某些东西推送到项目的中央存储库中,那么大量垃圾邮件将被推送到受欢迎的项目(更不用说创建更隐藏垃圾邮件的人,例如质量差的代码、病毒等)。
在这种情况下,您将代码返回到中央存储库的唯一机会是告诉项目维护者拉取您的代码。他会审查你的代码,他认为这很好,它最终会被合并到中央仓库中。这就是所谓的拉取请求。
然而
如果您克隆自己的项目或您从事的项目(您是维护者,或其中之一),您有权推送到中央仓库。所以,在这种情况下,你可以推动。如果您不从事开源工作,通常会遇到这种情况。只需将中央仓库设置为远程并推送到它。