Git 里面的 origin 到底代表啥意思?

git工作区

什么是origin?在解答之前,我们先来回顾下git的工作区、暂存区、git仓库基础概念。

git有三种状态:已提交(committed)、已修改(modified)和已暂存(staged):

  • 已提交
    数据已经安全的保存在本地数据库
  • 已修改
    修改了文件,但是还没保存到数据库中,发生在工作区
  • 已暂存
    对修改的文件的当前版本做了标记,让他包含在下次提交的快照当中。发生在暂存区,英文叫stage

什么是origin

你的代码库(repository)可以存放在你的电脑里,同时你也可以把代码库托管到Github的服务器上。在默认情况下,origin指向的就是你本地的代码库托管在Github上的版本。

我们假设你首先在github上创建了一个Repository,叫做repository,假设你的Github ID是user1,这个时候指向你的代码库的链接是

https://github.com/user1/repository

如果你在terminal里输入:

git clone https://github.com/user1/repository

那么git就会克隆一份托管在github上的代码库至本地,这时,本地仓库和远程仓库建立连接,这个时候你cd到repository目录,可以查看映射关系:

$ git remote -v

你会看到控制台输出:

`origin` https://github.com/user1/repository.git (fetch)
`origin` https://github.com/user1/repository.git (push)

也就是说git为你默认创建了一个指向远端代码库的标识origin,没有特殊意义,只是一个默认的习惯,比如叫zhangSan也可以。

那么为什么要创建这个标识呢?因为有时候,我们本地的一个仓库会同时关联2个远程仓库。

暂且不讨论原因。

再假设现在有一个用户user2 fork了你个repository,那么他的代码库链接就是这个样子:

https://github.com/user2/repository

fork是在远程服务器上克隆一份仓库,新的仓库也存在远程服务器

如果用户user2也照着这个url clone一把,然后在他的控制台(另一台电脑)里输入:

git remote -v

他会看的的就是:

origin https://github.com/user2/repository.git (fetch)
origin https://github.com/user2/repository.git (push)

可以看的origin指向的位置是user2的的远程代码库

这个时候,如果user2想加一个远程指向你的代码库,他可以在控制台输入:

git remote add upstream https://github.com/user1/repository.git

然后再输入一遍:

git remote -v

输出结果就会变为:

`origin` https://github.com/user2/repository.git (fetch)
`origin` https://github.com/user2/repository.git (push)
`upstream` https://github.com/user1/repository.git (push)
`upstream` https://github.com/user1/repository.git (push)

增加了指向user1代码库的upstream,这也是一个标识,这个是我们自己定义的,只是用来区分user1还是user2的远程仓库,upstream的名称只要不和已经出现的默认值origin重复就行

当我们需要推送一个提交时:

git push origin master

说明我们想把这个最新的提交记录提交至远程的origin 所对应的库;如果想提交至upstream,需要改写为:

git push upstream  master





参考 Git 里面的 origin 到底代表啥意思?
git工作区、暂存区、git仓库基础概念

  • 19
    点赞
  • 57
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值