Git轻松入门3:远程仓库篇

在第一讲中,我们有介绍过:Git是分布式版本控制系统。每个人的电脑上都有一份完整的版本库。当对项目作出了修改后,只要把修改推送给对方即可。但很有可能的情况是:两台电脑不在一个局域网内,无法互相访问;或者是你俩工作时间不一样,你上日班,他上夜班,两人很难找到时间连接到对方的电脑去推送修改。
所以在实际使用分布式版本控制系统时,是有一台电脑充当服务器的角色。这样,当我们有了修改时直接把修改提交到服务器的仓库里。其他人若是想获取这次修改,直接从服务器仓库中拉取即可。
而GitHub就扮演着这个服务器仓库的角色。你需要先注册一个GitHub账号,配置好你电脑的SSH Key(如何配置SSH Key?),因为Github是支持SSH协议的,所以有了该密钥后,当从你电脑上的仓库往GitHub仓库推送时,GitHub就能识别出你推送的提交确实是你推送的,而不是别人冒充的。而有些同学有多台电脑,他们一会从公司的电脑上传,一会从家里的电脑上传,这就需要配置多个密钥对。
配置好SSH Key后,再新建一个GitHub仓库,你的远程仓库就建立完毕。
与远程仓库建立连接
在本地仓库下运行以下指令可以与远程仓库建立连接。只要建立好这一次连接后,以后本地仓库和远程仓库就可以愉快方便地玩耍了~
$ git remote add [remote-alias] [remote-url]
其中 remote-url
指的是远程仓库的地址;remote-alias
指的是给该远程仓库起的外号,这样以后有什么事要找它直接喊它外号就可以了(通常,系统会默认给它起外号叫origin)。
- 以后想换外号的话,用
$ git remote rename [old-name] [new-name]
- 本地仓库若想和远程仓库绝交(断开连接),用
$ git remote rm [remote-alias]
- 要查看现在和哪些仓库建立连接了,用
$ git remote
。若添加-v参数,可以看到具体是往远程仓库的哪个地址fetch数据过来以及是往远程仓库的哪个地址push数据过去。
实战如下:

克隆远程仓库
当我们想要把远程仓库的内容下载到我们本地电脑时,用下面指令。
git clone [remote-url]
实战如下:

注意到:当使用该命令时,Git会自行帮你添加该远程仓库。
提取远程仓库的内容
# 获取远程仓库所有分支的更新
$ git fetch [remote-alias]
# 将某更新的分支合并到当前分支
$ git merge [remote-alias]/[remote-branch]
当fetch了远程仓库的更新后,我们在本地就拥有了远程仓库中所有分支的引用,如 origin/div1
,origin/main
。我们可以随时查看或合并。合并的命令就和之前在分支篇介绍的一样。
例如当远程仓库中的属于 main
分支的 README.md
文件和属于 div1
分支中的 div1.txt
文件有了更新后,利用上述命令,我们就可以把这两个文件的更新合并到本地。

当然,$ git fetch
和 $ git merge
命令可以简化成下面一条:
# 从远程仓库的某分支获取代码并与本地仓库中的某分支合并
$ git pull [remote-alias] [remote-branch-name]:[local-branch-name]
若合并的是当前分支,那么冒号后面的内容可以省略,即为:
$ git pull [remote-alias] [remote-branch-name]
推送到远程仓库
当你想把你的项目放到远程仓库时,你可以使用如下命令:
# 把本地仓库的某分支推送到远程仓库的同名分支里
$ git push [remote-alias] [branch-name]
例如:当我们对 div1
分支里的 div1.txt
文件作出修改后,我们想把这次修改推送到远程仓库。

这时,再打开Github中我们的远程仓库,就可以看到修改已被推送完毕。
注意:只有当你有远程仓库的写入权限,并且在你进行本次推送前,没人有再进行过推送了,该命令才可生效。例如你和你的同事正在合力开发一个新的项目,你的同事在一秒前把他们的工作推送到上游了,那么此时你再推送就会被拒绝。你必须先把刚刚他们的推送拉取下来,合并进你的工作后才能推送。
参考
有问题欢迎大家在评论区留言,转载请注明出处。
Git轻松入门3:远程仓库篇的更多相关文章
- Git轻松入门2:分支篇
什么是分支 在玩剧情类游戏时,不同的选择会触发不同的剧情路线,每条剧情路线都会独立发展,最终走向不同的结局. Git中所谓的"分支(branch)"就如同游戏中的剧情路线,用户可以 ...
- 【Eclipse中使用Git之一】把远程仓库的项目,clone到eclipse里面
[Eclipse中使用Git之一]把远程仓库的项目,clone到eclipse里面 2015-01-29 19:25 15779人阅读 评论(1) 收藏 举报 .embody{ padding:10p ...
- Git全解析之远程仓库交互
文章目录 1. Git全解析之远程仓库交互 1.1. 中央仓库的概念 1.2. 本地分支与远程分支 1.3. pull与fetch 1.4. 关于捐赠 Git全解析之远程仓库交互 中央仓库的概念 虽然 ...
- git本地项目关联远程仓库
应用场景: 当你在开发一个项目的时候,不想只在本地存储,想用git来管理代码时候的. 1.在你的项目根目录打开git命令窗口,通过 git init 命令把这个目录变成Git可以管理的仓库: git ...
- git在本地向远程仓库创建分支
在本地的仓库种,如果想给upstream创建新分支并关联,需要执行 git push -u/--set-upstream 远程仓库名 远程分支名
- git绑定两个远程仓库
最近在做公司项目,之前公司项目统一托管在codding 码云,最近我想把项目与自己的gitlab私人仓库再连接一下,作为自己作品收录的地方,这里总结一下用到的git命令及问题. 1.首先, 找到当前已 ...
- git查看添加删除远程仓库
查看远程仓库 git remote -v 删除远程仓库 git remote remove origin 添加远程仓库 git remote add origin 仓库地址 关联远程分支 重新关联远程 ...
- git clone了整个远程仓库分支
git之远程标签下载(远程分支) 一般我们发布一个新版本到线上服务器时都会在版本库中打一个标签,这样我们可以随时查看这个打标签的版本,就是说标签其实是版本库中一个快照.git的标签与分支类似,区别是分 ...
- 本地项目git初始化并提交远程仓库
1.先在远程仓库(如github)创建项目,为了避免错误,不要初始化 README, license, 或者gitignore文件 . 2.打开Terminal终端 3.切换到你的本地项目目录 4.初 ...
- 【Git】五、远程仓库
前面4节将的都是本地的git操作,这节开始讲合并到本地分支后,如何与远程仓库做交互 -------------------------------- 提要 //生成本地ssh密钥 $ ssh-keyg ...
随机推荐
- Group by后加rollup、cube、Grouping_Sets的用法区别
一.相关分析 通常当聚合率和数据量没有大于一定程度时,对于不涉及Rollup.Cube.Grouping_Sets这三种操作的聚合很少出现GC问题.对于Rollup.Cube.Grouping_Set ...
- uni-app 页面跳转的两种方法
1.navigator 标签 <navigator url="../component/classdetails/classdetails"> <view cl ...
- 【C++】《C++ Primer 》第十五章
第十五章 面向对象程序设计 一.OOP:概述 面向对象程序设计(OOP)的核心思想是数据抽象.继承和动态绑定. 通过使用数据抽象,可以将类的接口和实现分离. 使用继承,可以定义相似的类型并对其相似关系 ...
- Openstack 启动一个实例(九)
Openstack 启动一个实例(九) 创建一个提供者网络: # 创建一个提供者网络: openstack network create --share --external --provider-p ...
- Python运维自动化psutil 模块详解(超级详细)
psutil 模块 参考官方文档:https://pypi.org/project/psutil/ 一.psutil简介 psutil是一个开源且跨平台(http://code.google.com/ ...
- ClickHouse安装使用(单机、集群、高可用)
Clickhouse版本:20.3.6.40-2 安装包地址:https://repo.yandex.ru/clickhouse/rpm/stable/x86_64/ 一.单机版 1.安装依赖 yum ...
- 一文读懂 Kubernetes APIServer 原理
前言 整个Kubernetes技术体系由声明式API以及Controller构成,而kube-apiserver是Kubernetes的声明式api server,并为其它组件交互提供了桥梁.因此加深 ...
- openpose c++ 配置教程 + python api
之前有介绍过基于tensorflow的openpose版本安装,但是我觉得没有caffe框架那么好用,很多功能也实现不了,比如调节net_resolution的调节,通过调节分辨率来提高检测的精确性和 ...
- kubernetes 核心技术-Controller 控制器
一.什么是Controller? Controller是在集群上管理和运行容器的对象,Controller是实际存在的,Pod是抽象的,主要创建管理pod 二.Pod和Controller的关系 Po ...
- 【1w字+干货】第一篇,基础:让你的 Redis 不再只是安装吃灰到卸载(Linux环境)
Redis 基础以及进阶的两篇已经全部更新好了,为了字数限制以及阅读方便,分成两篇发布. 本篇主要内容为:NoSQL 引入 Redis ,以及在 Linux7 环境下的安装,配置,以及总结了非常详细的 ...