GitHub上的origin和upstream有什么区别?

时间:2012-02-13 08:35:10

标签: github

GitHuboriginupstream之间的区别是什么?

完成git branch -a命令后,某些分支的前缀为originremotes/origin/..),而其他分支的前缀为upstreamremotes/upstream/..

3 个答案:

答案 0 :(得分:634)

这应该在 GitHub forks 的背景下理解(在本地克隆该fork之前,你在GitHub上派一个GitHub仓库)。

  • upstream通常是指您分叉的原始回购 (有关upstream term)
  • 的更多信息,另请参阅“Definition of “downstream” and “upstream
  • origin是你的分支:你自己在GitHub上的回购,克隆了GitHub的原始回购

从GitHub页面:

  

当克隆一个repo时,它有一个名为origin的默认远程指向GitHub上的fork,而不是它所分叉的原始repo。   要跟踪原始仓库,您需要添加另一个名为upstream

的远程
git remote add upstream git://github.com/user/repo.git

您将使用upstream 从原始仓库中提取(以使您的本地副本与您要贡献的项目保持同步)。

git fetch upstream

(默认情况下,git fetch仅从origin获取,这不是此处所需的内容。

您将origin用于拉动和推送,因为您可以为自己的回购做贡献。

git pull
git push

(同样,没有参数,默认使用'origin')

您将通过 pull request 回馈upstream回购。

fork and upstream

答案 1 :(得分:1)

克隆fork之后,您必须显式添加一个远程上游,使用git add remote“您从中分叉的原始存储库”。这成为您的上游,您通常从上游获取并合并。其他任何事务,例如从本地向上游推送,都应使用拉取请求完成。

答案 2 :(得分:0)

简而言之

  • 起源:叉子
  • 上游:分叉