第一讲中,我们有介绍过: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/div1origin/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. WPF DataGrid与ListView性能对比与场景选择

    开门见山的说 性能对比: 在Demo中,DataGrid与ListView默认开启虚拟化(可以理解为动态渲染,类似懒加载只渲染屏幕可以看见的地方) DataGrid渲染10列50行随机字符280ms ...

  2. 【SpringBoot1.x】SpringBoot1.x 缓存

    SpringBoot1.x 缓存 文章源码 JSR107 Java Caching 定义了 5 个核心接口,分别为: CachingProvider 定义了创建.配置.获取.管理和控制多个 Cache ...

  3. 【SpringMVC】SpringMVC 实现文件上传

    SpringMVC 实现文件上传 文章源码 文件上传回顾 查看 JavaWeb 阶段的文件上传下载 实现步骤: 客户端: 发送 post 请求,告诉服务器要上传什么文件 服务器: 要有一个 form ...

  4. React & Vue2 Butterfly图编排——让数据更自由地驱动DAG

    一.简介 Butterfly是由阿里云-数字产业产研部孵化出来的的图编辑器引擎,由咱们部门以及其他开发者共同维护开发,具有使用自由.定制性高的优势,已支持集团内外上百张画布,不夸张的说,我觉得可以算的 ...

  5. 【Problems】Could not set property 'id' of 'xxx' with value '' Cause argument type mismatch

    一个问题:向comment表添加记录时,报错, 无法设置值. reflection.ReflectionException: Could not set property 'id' of 'class ...

  6. leetcode 473. 火柴拼正方形(DFS,回溯)

    题目链接 473. 火柴拼正方形 题意 给定一串数,判断这串数字能不能拼接成为正方形 思路 DFS,但是不能每次从从序列开始往下搜索,因为这样无法做到四个边覆盖不同位置的值,比如输入是(5,5,5,5 ...

  7. 优先队列priority_queue排序

    优先队列默认大顶堆,即堆顶元素是最大值 改成小顶堆时: priority_queue<int,vector<int>, greater<int> > Q;//注意最 ...

  8. 计网Q1:多个方面比较电路交换、报文交换和分组交换的主要优缺点

    网上看到的带佬儿的帖子......膜过来<doge 原文链接: https://blog.csdn.net/njchenyi/article/details/1540657 电路交换: 由于电路 ...

  9. ctfhub技能树—sql注入—整数型注入

    打开靶机 查看页面信息 查看回显位 查询数据库名 查询表名 查询字段 查询字段信息 使用sqlmap食用效果更佳 查数据库名 python2 sqlmap.py -u http://challenge ...

  10. HTML5表格详细教程

    HTML5表格 文章目录 HTML5表格 5.1 定义表格 5.1.1 普通表格.列标题 5.1.2 表格标题 5.1.3 表格行分组.表格列分组 5.2 表格属性 5.2.1 单线表格.分离单元格 ...