GitHub

  用过Git的小伙伴想必都知道GitHub是个什么东东,我这里就简单介绍一下吧。Git是一个分布式的版本控制系统,而GitHub可以托管各种Git库,并提供一个Web界面,方便查看Git库的历史版本。GitHub使得版本控制更加容易,多人协作编码变得更加简单。使用过SVN的小伙伴应该知道,当没有网络的支持,开发者并没有办法提交已完成的代码。但是GitHub就比较牛掰了,它支持离线提交,其实也就是提交到本地仓库。每一个开发者clone下的项目代码都是一个完整的仓库,当远程或其他协作开发者的代码无法恢复时,都可以方便地使用本地的仓库进行恢复。并且更牛掰的是,当需要对代码进行分支时,其他版本控制软件在大量文件时会很慢,而Github几乎是瞬间完成这个操作,而且只需要一个命令即可,是不是牛逼哄哄。。。

  好了,不扯那些没用的了,下面进入主题吧。

公钥与私钥

  为什么这里又扯出来公钥与私钥的概念呢?当然是GitHub要用到啦,不然我扯它干嘛。。。

  公钥(Public Key)与私钥(Private Key)是通过一种算法得到的一个密钥对(即一个公钥和一个私钥),公钥是密钥对中公开的部分,私钥则是非公开的部分。公钥通常用于加密会话密钥、验证数字签名,或加密可以用相应的私钥解密的数据。通过这种算法得到的密钥对能保证在世界范围内是唯一的。使用这个密钥对的时候,如果用其中一个密钥加密一段数据,必须用另一个密钥解密。比如用公钥加密数据就必须用私钥解密,如果用私钥加密也必须用公钥解密,否则解密将不会成功。

  好吧,我承认上面这段是我从百度百科上摘下来的,其实我也没看懂,下面我就说说我对于GitHub中公钥的作用的理解吧。

  在使用GitHub进行Git仓库托管时,GitHub是要求配置用户的公钥信息的。这样当你从GitHub上取数据时,实际上取过来的即是用你的公钥加密过的数据,这样就可以用你的与之对应的私钥进行解密了,因为它们总是成对生成的。同样的,你的PC端也保存了GitHub的公钥信息,当你朝GitHub上提交数据时,实际上数据也已经被GitHub的公钥加密过了,这样GitHub同样可以用与之对应的私钥进行解密了。这样就可以保证数据传输的安全性了。反正我是这么理解的,gaga。。。

  那公钥私钥是怎么生成的呢?GitHub的公钥信息又是保存在哪里呢?

  首先检查一下你的电脑现有的公钥私钥:cd ~/.ssh,如果提示No such file or directory,则说明你还没有公钥私钥,那当然是需要通过命令去生成一下的啦。也有可能你的.ssh目录下只有一个文件known_hosts,那就说明你是用过Git的,只是还没有用到过公钥私钥罢了。这个known_hosts就是用来保存其他系统的公钥信息的。假如你不仅使用过GitHub,还使用过其他的Git版本控制系统,它们的公钥信息都是一并保存在这里的。我记得在连接服务器时,服务器的公钥信息也是保存在这里的,记错了不要找我哈,我可不负责的。。。

  1、生成公钥私钥

    输入命令ssh-keygen -t rsa -C "邮件地址@youremail.com"

      Generating public/private rsa key pair.

      Enter file in which to save the key (/Users/your_user_directory/.ssh/id_rsa):<这里默认回车即可>

    然后系统会要你输入密码。

      Enter passphrase (empty for no passphrase):<输入加密串>

      Enter same passphrase again:<再次输入加密串>

    这个加密串会在你提交项目时使用,如果为空的话提交项目时则不用输入。这个设置是为了防止别人往你的项目里提交内容。

    最后看到这样的画面,就表示公钥私钥生成成功了。此时,在你的.ssh目录下就多出了两个文件id_rsa.pub和id_rsa,分别对应公钥和私钥。

  2、添加公钥到GitHub

    复制id_rsa.pub中的内容,怎么复制就不要我来说了吧,开个玩笑。。。

    登录到GitHub,点击右上角的Account Settings ---> SSH Public keys ---> add another public keys。

    把刚才复制的内容粘贴到文本框中, 点击add key就ok了。

  3、测试

    可以输入下面的命令,看看设置是否成功,git@github.com的部分不要修改。

      ssh -T git@github.com

    如果是下面的反馈:

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

      RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.

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

    不要紧张,这是因为你是第一次连接GitHub,询问你是否继续连接的,直接输入yes就好,然后就会看到:

      Hi xxx! You've successfully authenticated, but GitHub does not provide shell access.

GitHub使用

  1、建仓

    登录到GitHub,选择New repository,然后填写项目名称和其他信息,如图:

    这里的Add .gitignore,会根据你选择的语言自动生成对应的忽略配置,当然也可以自己修改。
    点击Create repository创建项目,跳转到如下页面:

  2、下面就可以直接clone了,或者也可以新建一个本地仓,然后执行pull、push、commit等操作啦。如果你和这些命令关系还都不错的话,相信应该知道怎么操作了。

  3、知道了如何在Github上创建仓库,可能还有很多人不知道如何去删除一个仓库,Github上删除仓库也很容易,就是有点难找。以删除TEST仓库为例,点击仓库右边的setting。

    跳转进入下一个页面,在页面最下方,就有如下图所示的删除铵钮。

结语

  好了,关于GitHub的使用就介绍到这里了,如果有什么不懂的,可以参考这里

GitHub使用指导的更多相关文章

  1. gitHub入门指导

    Github可以托管各种git库,并提供一个web界面,但与其它像 SourceForge或Google Code这样的服务不同,GitHub的独特卖点在于从另外一个项目进行分支的简易性.为一个项目贡 ...

  2. Windows上传代码到github操作指导

    操作环境 Windows7(32bit) 前提条件 1.完成msysgit工具安装.下载路径:官网或百度网盘路径Git-2.15.0-32-bit.exe.安装方法为一路Next按照默认选项执行就可以 ...

  3. CAP分布式事务 学习及简单demo

    完全参考 github的指导 demo地址, Pub使用 efcore , Sub 使用 dapper, mysql数据库 https://files.cnblogs.com/files/xtxtx/ ...

  4. [0406]学习一个——Unit 1 Html、CSS与版本控制

    前言 最近发现了Github的Student认证,本来想用来注册Digital Ocean搭个梯子,结果注册验证不能用VISA借记卡=~=. 那么在这漫长的清明节假期里,只有学习能满足空虚的内心(划掉 ...

  5. Kubernetes Dashboard的安装与坑【h】

    1.前言 https://github.com/kubernetes/dashboard/releases kubectl apply -f https://raw.githubusercontent ...

  6. 搜刮一些开源项目的APP

    iOS完整App资源收集 <iOS完整app资源收集>  <GitHub 上有哪些完整的 iOS-App 源码值得参考?> <GitHub 上有哪些完整的 iOS-App ...

  7. [no code][scrum meeting] Beta 7

    $( "#cnblogs_post_body" ).catalog() 例会时间:5月21日15:30,主持者:彭毛小民 下次例会时间:5月22日15:30,主持者:赵涛 昨日为5 ...

  8. [个人翻译]GitHub指导文件(GitHub Guides[Hello World])

    [个人翻译]GitHub指导文件(GitHub Guides[Hello World]) Mirage_j个人翻译,欢迎转载,最好标明出处http://www.cnblogs.com/mirageJ/ ...

  9. CodeGuide 300+文档、100+代码库,一个指导程序员写代码的,Github 仓库开源啦!

    作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.路怎样走,让你们自己挑 B站 视频:https://www.bilibili.com/vi ...

随机推荐

  1. MySQL data路径为空解决方法

    CMD x:\mysql\5.7.12\bin>mysqld --initialize-insecure --user=mysql

  2. Openjudge-NOI题库-垂直直方图

    题目描述 Description 写一个程序从输入文件中去读取四行大写字母(全都是大写的,每行不超过72个字符),然后用柱状图输出每个字符在输入文件中出现的次数.严格地按照输出样例来安排你的输出格式. ...

  3. iOS 最新App提交上架流程及部分问题的解决方案2016.12.21,感谢原博主!!!

    内容摘自http://www.cocoachina.com/bbs/3g/read.php?tid=330302,原博特别详细,下面我对部分地方进行了修改,主要是对在打包验证和上传的时候遇到的问题进行 ...

  4. S.O.L.I.D五大原则之单一职责SRP

    转自 : 汤姆大叔的blog Bob大叔提出并发扬了S.O.L.I.D五大原则,用来更好地进行面向对象编程,五大原则分别是: The Single Responsibility Principle(单 ...

  5. Hadoop fs 命令详解

    1. 环境:hadoop-2.6.0 2. 参数说明: hadoop fs [-appendToFile <localsrc> ... <dst>] [-cat [-ignor ...

  6. ueditor1.4.3 在IE8下的 BUG

    ueditor1.4.3  .net 版 在IE8 下,多图片上传完成后,点击确认时报错,无法插入图片到编辑器中 原因是 ueditor.all.js 中的 24835 行 if (whitList[ ...

  7. 8. Shell 文件包含

    1. 语法 . filename # 注意点号(.)和文件名中间有一空格 或 source filename ### test.sh #!/bin/bash url="www.baidu.c ...

  8. 安装aptana(1)

    以前在myeclipse8.5上装了aptana,现在用myeclipse2014了,但是用原来的方法没有安装上,网上搜了下,发现都是老的方法,对新版的myeclipse已经不适用了,下面是转载的一篇 ...

  9. linux的用户,群组和其他用户

    1 linux 安全模型:(多任务,多用户的操作系统) 1)使用user和group控制使用者对文件的存储权限. 2)用户使用账户和口令登录linux 3)每个文件都有owner(创建者),owner ...

  10. RF环境搭建

    官网:http://robotframework.org/ 序号 安装包名 安装方法 下载地址 备注 1 python exe文件,直接双击安装 https://www.python.org/down ...