如何创建Git本地仓库与服务器端仓库的关系

HTML5学堂-利利:关于Git的知识,我们共分成了四个大步骤进行讲解,之前我们提到了Git的安装与配置、Git在本地的使用方法,今天我们要讲解的就是如何创建Git本地仓库与服务器端仓库的关系。

今日内容:

一图胜千言,先看下图:

HTML5学堂之前的第一篇Git的文章,书写的是关于Git的安装以及初始化等操作,第二篇Git的文章,书写的是如何在本地操作Git,今天我们就来讲解如何通过Git把代码从本地推送到服务器端;而后面我们还有一篇文章,就是关于Git的多人协作(由于利利当前事情比较多,所以一篇一篇来吧~)

主要内容目录

  1. GitHub服务器的搭建
  2. SSH Key
  3. 本地创建SSH Key
  4. GitHub上设置SSH Key,从而创建“关系”
  5. 在GitHub上创建仓库
  6. 在本地添加仓库
  7. 将本地库的内容发送到服务器的仓库
  8. 从Git上克隆文件
  9. SSH警告
  10. 回看SVN与Git的区别
  11. 从GitHub中删除文件

将Git版本库与他人共享

我们可以将同一个Git仓库,分布到不同的机器上。在最早时,只有一台机器上存在一个原始的版本库,之后,其他的机器可以“复制”这个版本库,而且每台机器的版本库都是一样的,并没有主次之分。

在开发当中,我们会找一台电脑充当服务器的角色,24小时开机,其他每个人都可以从这个“服务器”将版本库中的文件,复制一份到自己的电脑,也能够将各自的文件,提交到服务器仓库里,也可以从服务器仓库中拉取别人提交的文件。

服务器搭建

服务器方面,一种是自己搭建服务器,另一种是借助GitHub。关于GitHub的使用,请参照HTML5学堂官网之前的文章《GitHub的用法》。

我们可以在GitHub上放置我们的代码,由于GitHub是一个开源网站,因此上传的代码所有人都可以看到,默认也是不需要给GitHub缴费的。不过,只有用户自身才能够修改上传的代码。

HTML5学堂温馨提醒:由于GitHub中的代码所有人可见,所以建议不要把关于自己的私人信息或敏感信息放进去。

HTML5学堂温馨提醒:如果你不想让别人看到你的代码,可以给GitHub交“保护费”,将代码库变成私有;当然,也可以自己购买一个服务器。


有了环境配置之后,我们就能够进行Git与GitHub的相关操作的,但是,先等等,我们得先了解一个东西 —— SSH Key

SSH Key

什么是SSH Key?

SSH key:由于github的代码是开源的,每个人都可以查看代码,但是只有自己能够修改代码,那么github如何识别出提交是用户本人推送的呢?SSH Key就如同一把“钥匙”,只有这把钥匙才能够针对相应的代码进行操作。

为何要设置SSH Key?

机器本地Git仓库和GitHub仓库之间的传输,是通过SSH进行加密的,因此需要设置SSH Key。


准备性的知识我们学完了,接下来我们来了解一下如何进行配置和操作。

1 本地创建SSH Key

在用户Git仓库的主目录下,查看有没有.ssh目录,查看.ssh目录下有没有id_rsa和id_rsa.pub文件,如果有,可直接跳到下一步。

如果没有,打开Git Bash,创建SSH Key

输入如下命令(注意:邮件地址需要换成你自己的)然后“回车”

$ ssh-keygen -t rsa -C "email@XXX.com"

可以在用户主目录(我的是在C盘的User[用户]当中)里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人

2 GitHub上设置SSH Key,从而创建“关系”

2.1 打开“Settings”

2.2 选择“SSH and GPG Keys”

2.3 点击“New SSH Key”

2.4 填上相应的Title,在Key文本框里粘贴id_rsa.pub文件的内容

2.5 点“Add Key”,你就应该看到已经添加的Key

Plus:

GitHub允许添加多个Key。假定有若干电脑,只要把每台电脑的Key添加到GitHub,就可以在每台电脑上向GitHub上推送了

3 在GitHub上创建仓库

登陆GitHub,然后,在右上角找到“Create a new repo”按钮,创建一个新的仓库

在Repository name填入“工程的名称(最好是使用英文)”,再填写上Description,其他保持默认设置,点击“Create repository”按钮,就成功地创建了一个新的Git仓库

4 在本地添加仓库

根据GitHub的提示,在本地仓库下运行命令

git remote add origin git@github.com:iceswan/h5coursetesting.git

(此处的iceswan/h5coursetesting.git为具体你的GitHub的链接地址)

5 将本地库的内容发送到服务器的仓库

git push -u origin master

代码解释:远程库的名字就是origin,这是Git默认的叫法。在GitHub当中添加仓库之后就可以把本地库的所有内容推送到远程库上了。

-u参数,通常在第一次推送master分支时使用。Git除了会把“本地的master内容推送到服务端的master分支”之外,还会把本地的master分支和服务端的master分支关联起来,从而让我们在以后的推送或者拉取时简化命令。

推送成功后,可以立刻在GitHub页面中看到远程库的内容已经和本地一模一样:

如果不是第一次推送的话,可以使用如下命令来推送最新修改

$ git push origin master

6 从Git上克隆文件

当然也有可能不进行推送,而是先从Git上克隆文件

$ git clone git@github.com:iceswan/h5coursetesting.git

(此处的iceswan/h5coursetesting.git为具体你的GitHub的链接地址)

7 SSH警告

当第一次使用Git的clone或者push命令连接GitHub时,会得到一个警告:

The authenticity of host 'github.com (xx.xx.xx.xx)' can't be established.

RSA key fingerprint is xx.xx.xx.xx.xx.

Are you sure you want to continue connecting (yes/no)?

SSH连接在第一次验证GitHub服务器的Key时,需要用户确认GitHub的Key的指纹信息是否真的来自GitHub的服务器,输入yes回车即可。

如果担心有人冒充GitHub服务器,输入yes前可以对照GitHub的 Key的指纹信息是否与SSH连接给出的指纹信息一致。


讲完整体之后,说一些额外的,在之前HTML5学堂的第一篇文章当中,我们提过SVN和Git的区别,当前我们再拿出来看一下,就会发现,应该能够更清楚的理解这两者对网络的依赖了~另外,关于如何从GitHub当中删除文件,也书写了一个小demo

回看SVN与Git的区别

SVN在没有联网的时候是拒绝干活的

Git在本地工作完全不需要考虑远程库的存在,没有联网也可以正常工作,当有网络的时候,再把本地提交推送到服务器都就完成了同步

从GitHub中删除文件

$ git rm 文件名
$ git commit –m 注释
$ git push origin master

HTML5小编-利利~10hours

原文发布于微信公众号 - HTML5学堂(h5course-com)

原文发表时间:2016-06-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏信安之路

与http头安全相关的安全选项

由于HTTP是一个可扩展的协议,各浏览器厂商都率先推出了有效的头部,来阻止漏洞利用或提高利用漏洞的难度。了解它们是什么,掌握如何应用,可以提高系统的安全性。 下...

880
来自专栏自然语言处理

GitHub简明操作指南

GitHub的是版本控制和协作代码托管平台。它可以让你和其他人的项目从任何地方合作。Git也是目前世界上最先进的分布式版本控制系统(没有之一)。最初编写用作Li...

882
来自专栏北京马哥教育

软件测试工程师必知必会Linux命令

Linux系统有着众多的优点,比如开源、非商业版本免费、多任务多用户操作,因此Linux系统在非桌面领域占有压倒性的市场份额。对于互联网技术工作者来说,掌握常用...

39813
来自专栏小狼的世界

Linux下创建可执行bin安装文件

1、简化操作。一般的软件安装过程,如果想要精简步骤,我们一般会将需要在命令行中输入的命令写成一个脚本,同时将安装介质准备好。我们将脚本和安装介质上传到生产环境,...

1432
来自专栏赵俊的Java专栏

Hexo 扩展 --- 优雅的备份 Hexo 博客

4353
来自专栏林欣哲

图解Git合并--Merge和Rebase

项目初始情况 ? Merge fast-forward ? 快速合并,直接把指针指向前去,无冲突要解决。 非 fast-forward ? 保留历史记录,解决冲...

2887
来自专栏云计算教程系列

使用mysqldump备份MySQL或MariaDB

在日常维护工作当中经常会需要对数据进行导出操作,而mysqldump是导出数据过程中使用非常频繁的一个工具。本文将简介MySQL如何使用mysqldump工具进...

1083
来自专栏Youngxj

144G网页在线制作源码 v1.4

3177
来自专栏Samego开发资源

自动化运维之Fabric

1854
来自专栏云计算教程系列

如何在Ubuntu 16.04上使用Concourse CI设置持续集成管道

Concourse CI是一个现代的,可扩展的集成系统,旨在通过可组合的声明性语法自动测试管道。

1432

扫码关注云+社区