“ git remote add上游”有什么帮助?


76

我正在阅读:https : //wiki.diasporafoundation.org/Git_workflow#Rebase_your_development_branch_on_the_latest_upstream

这是摘录:

您的存储库是最新的

为了从开发主干中获取最新更新,请执行一次设置以通过输入以下内容将主要的GitHub存储库建立为远程数据库:

$ git remote add upstream git://github.com/diaspora/diaspora.git

为您的开发部门提供最新的上游资源

为了使您的开发分支保持最新状态,请在上游主服务器的当前状态基础上重新进行更改。请参阅什么是git-rebase?以下部分以了解有关重新定级的更多信息。

如果您已如上所述设置了一个上游分支和一个名为100-retweet-bugfix的开发分支,则将更新上游,更新本地主服务器,并从中重新建立分支,如下所示:

$ git fetch upstream

$ git checkout master

$ git rebase upstream/master

$ git checkout 100-retweet-bugfix

[确保在分支中根据需要提交所有内容]

$ git rebase master

为什么在这种情况下需要添加“远程上游”?我不是刚刚做完了:

$ git checkout master

$ git pull origin master

$ git checkout 100-retweet-bugfix

[确保在分支中根据需要提交所有内容]

$ git rebase master

你应该做的git remote add不是git add remote...
蜂蜜

Answers:


85

Wiki从分叉的仓库角度进行交谈。您可以从原点进行推拉,这将是散居海外主要仓库的分支。要从此主存储库中提取更改,请在本地存储库中添加一个远程“上游”,指向该原始存储库并从中提取。

因此,“ origin”是您的fork回购的克隆,您可以在其中进行推拉。“上游”是主存储库的名称,您可以从中提取并保持分叉的克隆更新,但没有推送访问权限。


1
谢谢@manojlds!然后我在这里有一个后续问题:链接
ben39

16

当您有自己origin的没有时,这很有用upstream。换句话说,您可能拥有自己的存储origin库,您可以在其中进行开发和本地更改,然后偶尔合并upstream更改。您的示例和突出显示的文本之间的区别在于,您的示例假定您直接使用上游仓库的克隆。高亮显示的文本假定您正在处理自己的仓库的克隆,该仓库大概是最初的上游克隆。


谢谢@smparkes!这真的很有帮助。然后我在这里有一个后续问题:链接
ben39

4

我认为它可以用于“追溯分叉”

如果您有一个Git仓库,现在已经决定它应该分叉另一个仓库。追溯地,您希望它成为一个分支,而不会通过要求他们定位新存储库而干扰使用该存储库的团队。

但是我可能是错的。


5年前回答问题后,此答案带来了什么价值?而且您甚至仍不确定正确的答案...
Maciej Jureczko

@MaciejJureczko如果这个问题/答案正在讨论如何(我认为是,但不确定),我不是一个人想知道如何“追溯叉子”。然后,该问题可以用作其他问题的答案。stackoverflow.com/questions/30472771/… ...如果这是追溯方式,现在可以在这些搜索词中找到。我花了一段时间思考,也许添加上游存储库可能正是我想要的。如果OP是唯一的观众,他们将不会存档“ 5年前”的问题。
翁纳勒(Onceler)2017年

1

让我们举个例子:您想为django做出贡献,因此您可以分叉其仓库。在您使用功能时,其他人在原始存储库上做了很多工作。因此,您分叉的代码不是最新的。设置远程上游并不时获取它,以确保您的分叉存储库与原始存储库同步。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.