origin vs upstream - Git名词解释

origin

在使用过程中经常可以看到origin这个名词,origin(原点)这次词是从哪来的呢?
要查看当前配置有哪些远程仓库,可以用git remote命令,它会列出每个远程库的简短名字。在克隆完某个项目后,至少可以看到一个名为 origin 的远程库,git 默认使用这个名字来标识你所克隆的原始仓库。
这就是 origin 的由来,如果是克隆了一个仓库,此命令会自动将远程仓库归于 origin 这个标识名下。

upstream

upstream 这个名词是在github的Fork功能上衍生出来的。
对于一些有名的开源项目(这里我选的是spring-framework项目),我们常常会把把这些项目Fork到自己的github上,然后再从自己的github把这个项目clone到本地,这时用git remote -v命令查看一下远程仓库的情况,可以看到:

$ git remote -v
origin  https://github.com/Flamingo93/spring-framework.git (fetch)
origin  https://github.com/Flamingo93/spring-framework.git (push)
upstream        https://github.com/spring-projects/spring-framework.git (fetch)
upstream        https://github.com/spring-projects/spring-framework.git (push)

从输出可以看出upstream与origin是并列的关系,他们都是远程仓库的名字,只不过origin是你所克隆的原始仓库的默认名字,upstream是fork的原项目的远程仓库的默认名字。


upstream & origin

可以用git fetch [remote-name]命令从远程仓库抓取数据到本地:

$ git fetch origin        #抓取在你的GitHub仓库上新的提交数据到本地仓库
$ git fetch upstream        #抓取在著名开源项目的GitHub仓库上新的提交数据到本地仓库

Ref: What is the difference between origin and upstream on GitHub?

你可能感兴趣的:(origin vs upstream - Git名词解释)