'git remote add upstream'有助于实现什么?

时间:2012-01-20 22:43:04

标签: git github rebase

我正在阅读: 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
     

在最新的上游重新启动您的开发部门

     

要使您的开发分支保持最新,请将您的更改置于最顶层   上游主站的当前状态。看看是什么   混帐变基?以下部分了解有关变基的更多信息。

     

如果您已经如上所述设置了上游分支,并且a   开发分支称为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

4 个答案:

答案 0 :(得分:64)

维基正在从分叉的回购角度谈论。您可以从原点进行拉动和推动,这将是您的主要侨民回购的分支。要从此主仓库中提取更改,您需要在本地仓库中添加一个远程“上游”,指向此原始并从中拉出。

所以“origin”是你的fork repo的克隆,你可以从中推送。 “上游”是主要仓库的名称,您可以从中提取和更新分支的克隆,但您没有对其进行推送访问。

答案 1 :(得分:15)

如果您拥有的origin不是upstream,则此功能非常有用。换句话说,您可能拥有自己的origin repo,您​​可以进行开发和本地更改,然后偶尔合并upstream更改。您的示例与突出显示的文本之间的区别在于您的示例假定您正在直接使用上游存储库的克隆。突出显示的文本假设您正在研究自己的回购,这可能是最初是上游的克隆。

答案 2 :(得分:3)

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

如果你有一个Git回购,现在已经决定它应该分叉另一个回购。追溯性地,您希望它成为一个分支,而不会因为需要他们定位一个新的回购来破坏使用回购的团队。

但我可能错了。

答案 3 :(得分:2)

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