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仓库基础概念
今天的文章Git 里面的 origin 到底代表啥意思?分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/64135.html