当前位置: 首页 > news >正文

GitHub 基本常用知识解答

1、Fork、Watch、Star 是什么意思?

 

fork的意思是从别人的代码库中复制一份到你自己的代码库,与普通的复制不同,fork包含了原有库中的所有提交记录,

fork后这个代码库是完全独立的,属于你自己,你可以在自己的库中做任何修改,当然也可以通过Pull Request向原来的库提交合并请求。

 

顺便说一下Watch和Star:

  • Watch,意思是关注,关注后,代码库中有新的commit你都会收到通知;

  • Star,与watch不同,star相当于收藏,你可以方便地找到你star过的库,但是不会收到关于那个库的任何通知。   

 

2、gitHub 上的SSH公钥 是什么意思 ?

     作用:使用SSH公钥可以让你在你的电脑和Git@OSC通讯的时候使用安全连接

    

通常,通过ssh登录远程服务器时,使用密码认证,分别输入用户名和密码,两者满足一定规则就可以登录。但是密码认证有以下的缺点:

  • 用户无法设置空密码(即使系统允许空密码,也会十分危险)
  • 密码容易被人偷窥或猜到
  • 服务器上的一个帐户若要给多人使用,则必须让所有使用者都知道密码,导致密码容易泄露,而且修改密码时必须通知所有人

而使用公钥认证则可以解决上述问题。

  • 公钥认证允许使用空密码,省去每次登录都需要输入密码的麻烦
  • 多个使用者可以通过各自的密钥登录到系统上的同一个用户

 公钥认证的原理

所谓的公钥认证,实际上是使用一对加密字符串,一个称为公钥(public key),任何人都可以看到其内容,用于加密;

另一个称为密钥(private key),只有拥有者才能看到,用于解密。通过公钥加密过的密文使用密钥可以轻松解密,但根据公钥来猜测密钥却十分困难。

ssh 的公钥认证就是使用了这一特性。服务器和客户端都各自拥有自己的公钥和密钥。

为了说明方便,以下将使用这些符号。

Ac客户端公钥
Bc客户端密钥
As服务器公钥
Bs服务器密钥

在认证之前,客户端需要通过某种方法将公钥 Ac 登录到服务器上。

 

认证过程分为两个步骤。

  1. 会话密钥(session key)生成
    1. 客户端请求连接服务器,服务器将 As 发送给客户端。
    2. 服务器生成会话ID(session id),设为 p,发送给客户端。
    3. 客户端生成会话密钥(session key),设为 q,并计算 r = p xor q。
    4. 客户端将 r 用 As 进行加密,结果发送给服务器。
    5. 服务器用 Bs 进行解密,获得 r。
    6. 服务器进行 r xor p 的运算,获得 q。
    7. 至此服务器和客户端都知道了会话密钥q,以后的传输都将被 q 加密。
  2. 认证
    1. 服务器生成随机数 x,并用 Ac 加密后生成结果 S(x),发送给客户端
    2. 客户端使用 Bc 解密 S(x) 得到 x
    3. 客户端计算 q + x 的 md5 值 n(q+x),q为上一步得到的会话密钥
    4. 服务器计算 q + x 的 md5 值 m(q+x)
    5. 客户端将 n(q+x) 发送给服务器
    6. 服务器比较 m(q+x) 和 n(q+x),两者相同则认证成功

 

3、.gitignore文件

.gitignore顾名思义就是告诉git需要忽略的文件,这是一个很重要并且很实用的文件。

一般我们写完代码后会执行编译、调试等操作,这期间会产生很多中间文件和可执行文件,这些都不是代码文件,是不需要git来管理的。

我们在git status的时候会看到很多这样的文件,如果用git add -A来添加的话会把他们都加进去,而手动一个个添加的话也太麻烦了。

这时我们就需要.gitignore了。比如一般c#的项目我的.gitignore是这样写的:

 

4、   Git fetch和git pull的区别

          Git中从远程的分支获取最新的版本到本地有这样2个命令:

    1. git fetch:相当于是从远程获取最新版本到本地,不会自动merge

     git fetch origin master
     git log -p master..origin/master
     git merge origin/master
    以上命令的含义:

   首先从远程的origin的master主分支下载最新的版本到origin/master分支上
   然后比较本地的master分支和origin/master分支的差别
   最后进行合并
   上述过程其实可以用以下更清晰的方式来进行:

    git fetch origin master:tmp
    git diff tmp 
    git merge tmp

    从远程获取最新的版本到本地的test分支上之后再进行比较合并

2. git pull:相当于是从远程获取最新版本并merge到本地

    git pull origin master

    上述命令其实相当于git fetch 和 git merge
    在实际使用中,git fetch更安全一些因为在merge前,我们可以查看更新情况,然后再决定是否合并
 

相关文章:

  • Spring+Mybatis+Velocity配置
  • Startssl SSL 证书申请图解
  • loadrunner关联及web_reg_save_param方法浅析
  • Jquery Mobile 百度地图 Demo
  • Linux系统日常管理2 tcpdump,iptables
  • cocos2d-x3.0 经常使用绘图方法
  • pear安装模块出现报错——could not extract the package.xml
  • 微信天气接口查询
  • linux下串口的阻塞和非阻塞操作
  • shell 中 21 的使用
  • Java静态代码分析工具Infer
  • 图书馆管理系统程序设计
  • 二进制、八进制、十进制、十六进制之间转换
  • WindowsFormApplication 基础篇0:30分钟撸出自己的浏览器
  • LeetCode:Reverse LinkedList
  • android图片蒙层
  • Babel配置的不完全指南
  • exports和module.exports
  • httpie使用详解
  • iOS编译提示和导航提示
  • java2019面试题北京
  • Meteor的表单提交:Form
  • php的插入排序,通过双层for循环
  • Vim 折腾记
  • Vue 动态创建 component
  • Vue小说阅读器(仿追书神器)
  • 对JS继承的一点思考
  • 06-01 点餐小程序前台界面搭建
  • 阿里云ACE认证之理解CDN技术
  • 阿里云服务器如何修改远程端口?
  • 东超科技获得千万级Pre-A轮融资,投资方为中科创星 ...
  • # 飞书APP集成平台-数字化落地
  • # 再次尝试 连接失败_无线WiFi无法连接到网络怎么办【解决方法】
  • #Linux(帮助手册)
  • #鸿蒙生态创新中心#揭幕仪式在深圳湾科技生态园举行
  • (2)Java 简介
  • (2.2w字)前端单元测试之Jest详解篇
  • (android 地图实战开发)3 在地图上显示当前位置和自定义银行位置
  • (C++)栈的链式存储结构(出栈、入栈、判空、遍历、销毁)(数据结构与算法)
  • (Matalb时序预测)PSO-BP粒子群算法优化BP神经网络的多维时序回归预测
  • (附源码)计算机毕业设计ssm本地美食推荐平台
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理 第13章 项目资源管理(七)
  • (太强大了) - Linux 性能监控、测试、优化工具
  • (新)网络工程师考点串讲与真题详解
  • (一)pytest自动化测试框架之生成测试报告(mac系统)
  • (一)spring cloud微服务分布式云架构 - Spring Cloud简介
  • (已解决)vue+element-ui实现个人中心,仿照原神
  • (原創) 如何使用ISO C++讀寫BMP圖檔? (C/C++) (Image Processing)
  • (转)EOS中账户、钱包和密钥的关系
  • (转)socket Aio demo
  • (转)Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案一
  • *++p:p先自+,然后*p,最终为3 ++*p:先*p,即arr[0]=1,然后再++,最终为2 *p++:值为arr[0],即1,该语句执行完毕后,p指向arr[1]
  • .MSSQLSERVER 导入导出 命令集--堪称经典,值得借鉴!
  • .net 4.0 A potentially dangerous Request.Form value was detected from the client 的解决方案
  • .NET Framework与.NET Framework SDK有什么不同?