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前,我们可以查看更新情况,然后再决定是否合并

 

时间: 2024-10-14 05:02:08

GitHub 基本常用知识解答的相关文章

GitHub 基本常用知识解答2

1.如何拥有一个Git仓库的两种途径    (1)在已有的目录中,初始化一个新的.    (2) 比如一个新的项目,或者一个已存在的项目,但该项目尚未有版本控制.如果你想要复制一份别人的项目, 或者与别人合作某个项目,也可以从一个公开的 Git 仓库克隆.   2.Git分支管理策略     http://www.ruanyifeng.com/blog/2012/07/git.html    GIT分支管理是一门艺术   3.Git详解      Git详解之一 Git起步       Git详

【基于WPF+OneNote+Oracle的中文图片识别系统阶段总结】之篇一:WPF常用知识以及本项目设计总结

篇一:WPF常用知识以及本项目设计总结 [1]开篇之始粘贴下WPF设计界面与前台代码如下:(后台实现以及内部分析放在第二篇) 本页面xaml完整代码: <Window x:Class="OnenoteOCRDemo.Main" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/200

一篇文章掌握RequireJS常用知识_javascript技巧

本文采取循序渐进的方式,从理论到实践,从RequireJS官方API文档中,总结出在使用RequireJS过程中最常用的一些用法,并对文档中不够清晰具体的内容,加以例证和分析,分享给大家供大家参考,具体内容如下 1. 模块化 相信每个前端开发人员在刚开始接触js编程时,都写过类似下面这样风格的代码: <script type="text/javascript"> var a = 1; var b = 2; var c = a * a + b * b; if(c> 1)

SQLSERVER 的一些常用知识总结

    平时工作一会搞Oracle一会搞SqlServer,脑子都迷糊了,为了避免继续模糊,今天抽出点时间把我常用的sqlserver的一些东西整理了下,发出来,以后忘了就来找,过几天再整理个Oracle常用知识.没啥技术含量主要是备忘. 1.SQLserver忘记密码修改方法 从"查询分析器"中以"Windows身份验证"连接SQL Server 执行如下过程 EXEC sp_password NULL, ''你的新密码'', ''用户名例如sa'' 2.更改当前

Redis安装和常用知识

在应用Redis过程中经常需要查询些知识,博客园中这个朋友写的不错,转载收藏一下. Redis 安装与简单示例 <第一篇> http://www.cnblogs.com/kissdodog/p/3570984.html Redis常用命令速查 <第二篇> http://www.cnblogs.com/kissdodog/p/3599047.html ServiceStack.Redis之IRedisClient<第三篇> http://www.cnblogs.com/k

c#重点知识解答(五)

解答 第五章:代理 代理实现的是象c++等语言的指针功能,不同于函数指针,代理是一种面向对象.安全类型的.代理事派生于公共基类(system)的一种参考类型,方法被压入一个代理中,对于实例方法被称为实例的组成实体或关于实例的方法,而静态方法,被称为类的组成实体或类方法.代理的强大功能是它可以自动的匹配方法,而不管其类型. 写一个代理包括三个步骤: 写代理.实例化.调用. 代理的声明使用以下语法: delegate void SimpleDelegate(); 实例化一个代理 class Test

固态硬盘常用知识大全

  固态硬盘,因其极高的读写速度,显著的提高电脑运行速度以及较为亲民的售价,已经成为当下DIY市场标配的明星单品了. 但是,固态硬盘作为新兴产品,还有许多注意事项并没有被人重视,导致许多人在使用过程中,无法真正享受到固态硬盘带来的极速体验,更有甚者,成为电脑的累赘. 今天,笔者就和大家一起聊聊关于固态硬盘的一些常用"姿势",让大家享受到固态硬盘的真实速度. 1.常见的固态硬盘接口SATA.M.2以及msata 固态硬盘作为DIY单品,根据接口类型不同,存在着各种不同的产品.所以在选购固

PHP/Javascript/CSS/jQuery常用知识大全详细整理第1/2页_php技巧

1. 变量如何定义?如何检查变量是否定义?如何删除一个变量?怎样检测变量是否设置?       $定义   isset()// 检测变量是否设置        defined()// 检测常量是否设置       unset()//销毁指定的变量       empty()// 检测变量是否为空 2. 什么是可变变量?       一个变量的变量名可以动态的设置和使用.       $a = 'hello' , $$a = 'world',  ${$a}=hello world3. 变量赋值方式

Apache的压力测试以及web性能优化的常用知识总结_Linux

什么是带宽? 误解:"数据在线路中的移动速度"."数据的传输速度" 我们所说的带宽是指数据的发送速度,比如百兆网卡,指网卡的最大发送速度是100Mbps,也就是说网卡在一秒钟最多可以发送100Mb的数据:相关的因素: 数据发送装置将二进制信号传送到线路的能力,也称信号传输频率,以及另一端数据接收装置对二进制信号接收的能力,也包括线路对传输频率的支持程度: 数据传输介质的并行度,等价于计算机系统总线宽度的概念:   习惯与约定 b:比特单位 bit: B:字节单位 B