在第一讲中,我们有介绍过: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中我们的远程仓库,就可以看到修改已被推送完毕。

注意:只有当你有远程仓库的写入权限,并且在你进行本次推送前,没人有再进行过推送了,该命令才可生效。例如你和你的同事正在合力开发一个新的项目,你的同事在一秒前把他们的工作推送到上游了,那么此时你再推送就会被拒绝。你必须先把刚刚他们的推送拉取下来,合并进你的工作后才能推送。

参考

  1. http://git-scm.com/book/en/v2/Git-Basics-Working-with-Remotes

有问题欢迎大家在评论区留言,转载请注明出处。

Git轻松入门3:远程仓库篇的更多相关文章

  1. Git轻松入门2:分支篇

    什么是分支 在玩剧情类游戏时,不同的选择会触发不同的剧情路线,每条剧情路线都会独立发展,最终走向不同的结局. Git中所谓的"分支(branch)"就如同游戏中的剧情路线,用户可以 ...

  2. 【Eclipse中使用Git之一】把远程仓库的项目,clone到eclipse里面

    [Eclipse中使用Git之一]把远程仓库的项目,clone到eclipse里面 2015-01-29 19:25 15779人阅读 评论(1) 收藏 举报 .embody{ padding:10p ...

  3. Git全解析之远程仓库交互

    文章目录 1. Git全解析之远程仓库交互 1.1. 中央仓库的概念 1.2. 本地分支与远程分支 1.3. pull与fetch 1.4. 关于捐赠 Git全解析之远程仓库交互 中央仓库的概念 虽然 ...

  4. git本地项目关联远程仓库

    应用场景: 当你在开发一个项目的时候,不想只在本地存储,想用git来管理代码时候的. 1.在你的项目根目录打开git命令窗口,通过 git init 命令把这个目录变成Git可以管理的仓库: git ...

  5. git在本地向远程仓库创建分支

    在本地的仓库种,如果想给upstream创建新分支并关联,需要执行 git push -u/--set-upstream 远程仓库名 远程分支名

  6. git绑定两个远程仓库

    最近在做公司项目,之前公司项目统一托管在codding 码云,最近我想把项目与自己的gitlab私人仓库再连接一下,作为自己作品收录的地方,这里总结一下用到的git命令及问题. 1.首先, 找到当前已 ...

  7. git查看添加删除远程仓库

    查看远程仓库 git remote -v 删除远程仓库 git remote remove origin 添加远程仓库 git remote add origin 仓库地址 关联远程分支 重新关联远程 ...

  8. git clone了整个远程仓库分支

    git之远程标签下载(远程分支) 一般我们发布一个新版本到线上服务器时都会在版本库中打一个标签,这样我们可以随时查看这个打标签的版本,就是说标签其实是版本库中一个快照.git的标签与分支类似,区别是分 ...

  9. 本地项目git初始化并提交远程仓库

    1.先在远程仓库(如github)创建项目,为了避免错误,不要初始化 README, license, 或者gitignore文件 . 2.打开Terminal终端 3.切换到你的本地项目目录 4.初 ...

  10. 【Git】五、远程仓库

    前面4节将的都是本地的git操作,这节开始讲合并到本地分支后,如何与远程仓库做交互 -------------------------------- 提要 //生成本地ssh密钥 $ ssh-keyg ...

随机推荐

  1. phoenix启动报错:org.apache.phoenix.exception.PhoenixIOException: SYSTEM.CATALOG

    错误: org.apache.phoenix.exception.PhoenixIOException: SYSTEM.CATALOG at org.apache.phoenix.util.Serve ...

  2. 原生js的一些盲点

    1.document.readyState 有三个值loading  interactive //loading 仍在加载 interactive  文档已被解析 正在加载状态结束 但是样式表和框架之 ...

  3. 风炫安全web安全学习第三十节课 命令执行&代码执行基础

    风炫安全web安全学习第三十节课 命令执行&代码执行基础 代码执行&命令执行 RCE漏洞,可以让攻击者直接向后台服务器远程注入操作系统命令或者代码,从而控制后台系统. 远程系统命令执行 ...

  4. idea多模块启动

    2018版本的idea 原文链接http://zhhll.icu/2020/04/07/idea/idea%E4%B9%8B%E5%A4%9A%E6%A8%A1%E5%9D%97%E5%90%AF%E ...

  5. 一文读懂 SuperEdge 边缘容器架构与原理

    前言 superedge是腾讯推出的Kubernetes-native边缘计算管理框架.相比openyurt以及kubeedge,superedge除了具备Kubernetes零侵入以及边缘自治特性, ...

  6. 天梯赛练习 L3-006 迎风一刀斩 (30分) 几何关系

    题目分析: 对于给出的两个多边形是否可以组成一个矩形,这里我们分以下几种情况讨论 1.首先对于给出的两个多边形只有3-3,3-4,3-5,4-4才有可能组成一个矩形,并且两个多边形只可能是旋转90,1 ...

  7. Docker学习笔记之基本命令使用

    测试的环境为Ubuntu1804. 1. search命令搜索镜像 sudo docker search centos 搜索centos相关的镜像,可以看到第一个最多星的的centos是官方的镜像,而 ...

  8. Js中函数式编程的理解

    函数式编程的理解 函数式编程是一种编程范式,可以理解为是利用函数把运算过程封装起来,通过组合各种函数来计算结果.函数式编程与命令式编程最大的不同其实在于,函数式编程关心数据的映射,命令式编程关心解决问 ...

  9. ClickHouse安装使用(单机、集群、高可用)

    Clickhouse版本:20.3.6.40-2 安装包地址:https://repo.yandex.ru/clickhouse/rpm/stable/x86_64/ 一.单机版 1.安装依赖 yum ...

  10. 三种梯度下降算法的区别(BGD, SGD, MBGD)

    前言 我们在训练网络的时候经常会设置 batch_size,这个 batch_size 究竟是做什么用的,一万张图的数据集,应该设置为多大呢,设置为 1.10.100 或者是 10000 究竟有什么区 ...